众所周知,构造函数的job就是保证每个对象的数据成员具有合适的初始值

//假设name(string),stuNum(int),grade(int)都是类myClass的数据成员
class myClass::myClass()
{name = "1班";stuNum = 60;grade = 2;
}

一直认为上面构造函数的函数体内三行便是对数据成员的初始化,今天一个偶然的bug给了我当头一棒,看了看Primer才知道那是赋值不是初始化。。。。。。

其实构造函数的执行是分两个阶段的:1、初始化阶段 2、普通的计算阶段 。(计算阶段由构造函数的函数体内的所有语句组成,成员变量的初始化发生在计算阶段之前!!!)

那么我们怎么对成员变量初始化?

1、通过构造函数的初始化列表,提倡!!

2、不使用初始化列表:(1)、类类型的成员变量会使用默认构造函数初始化;(2)、内置类型:依据变量的作用域--全局初始化,局部不初始化。

不过还是得注意:

1、构造函数的初始化列表指在构造函数的的定义中而不是声明中指定

2、有些变量必须使用初始化列表初始化:没有默认构造函数的类类型变量、const成员变量、引用类型的变量

C++学习之构造函数初始化式相关推荐

  1. C++ 类构造函数初始化列表介绍

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式. 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个 ...

  2. C++类构造函数初始化列表

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public:     int a;     f ...

  3. c++的构造函数初始化列表

    C++类构造函数初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public: in ...

  4. C++类构造函数初始化列表及初始化成员变量的误区

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: [cpp] view plaincopy class CExample { pub ...

  5. c++初始化成员列表_C++ 类构造函数初始化列表

    关注我们更多精彩等你发现! 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: 上面的例子中两个构造函数的结果是一样的.上面的构造函数 ...

  6. 10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函数

    首先回忆下,以前学的const 单独使用const修饰变量时,是定义的常量,比如:const int i=1; 使用volatile const修饰变量时,定义的是只读变量 使用const & ...

  7. C++ explicit禁止单参构造函数隐式调用

    1.单参数构造函数隐式调用 C++中单参数构造函数是可以被隐式调用的,主要有两种情形会隐式调用单参数构造函数: (1)同类型对象的拷贝构造:即用相同类型的其它对象来初始化当前对象. (2)不同类型对象 ...

  8. C++构造函数初始化列表与构造函数中的赋值的区别

    转载 C++构造函数初始化列表与构造函数中的赋值的区别 2016-12-10 15:16:51 xingpacer 阅读数 10391更多 分类专栏: C++相关 查看全文 http://www.ta ...

  9. 1. 创建一个桌子Table类,该类中有桌子名称,重量,桌面宽度,长度及桌子高度属性。要求: ① 设计并画出桌子Table类类图; ② 用构造函数初始化所有数据成员; ③ Area() :计算桌面的

    题目 ‬‬1. 创建一个桌子Table类,该类中有桌子名称,重量,桌面宽度,长度及桌子高度属性.要求: ① 设计并画出桌子Table类类图: ② 用构造函数初始化所有数据成员; ③ Area() :计 ...

最新文章

  1. Spinnaker部署
  2. apply call this arguments caller callee
  3. python有哪些方向、应该怎么学-终于找到深圳学Python,有几个方向?怎么从一个方向学到底...
  4. Zabbix基本配置及监控主机
  5. Linux 链接详解----动态链接库
  6. 在计算机技术领域中数据库一词泛指,数据库原理模拟试题.doc
  7. NIPS 2017论文解读 | 基于对比学习的Image Captioning
  8. 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
  9. HTML5编程实战之二:用动画的形式切换图片
  10. python入门(5)使用文件编辑器编写代码并保存执行
  11. Arch Linux 安装总结
  12. javase 的一些基础常用类
  13. div无法触发blur事件解决的方法
  14. li下的ul----多级列表
  15. java的反射机制(第二篇)
  16. ViewState EnableViewState 禁用与使用心得
  17. 五、OpenCV-python 之图像处理(Ⅲ)——傅里叶变换
  18. 移动前端开发的一些简单分类!
  19. 写给那些让我糊里糊涂的HTTP、TCP、UDP、Socket
  20. 收藏 一句话问答 linux

热门文章

  1. PHP命令行输入和输出
  2. python-openCV识别银行卡号,车牌同理,代码直接可用
  3. Arcgis Engine 二次开发之属性查询
  4. 第五届“泰迪杯”数据分析技能赛
  5. 安装及配置PHP开发环境
  6. ssm项目详细概述以及流程
  7. 计算机网络笔记(王道考研) 第六章:应用层
  8. openjudge 1.6.15 阶乘和
  9. 目标检测算法——YOLOv7训练自己的数据集(保姆级教程)
  10. U盘插入电脑能够识别,但无法读取数据问题