C++学习之构造函数初始化式
众所周知,构造函数的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++学习之构造函数初始化式相关推荐
- C++ 类构造函数初始化列表介绍
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式. 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个 ...
- C++类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public: int a; f ...
- c++的构造函数初始化列表
C++类构造函数初始化列表 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public: in ...
- C++类构造函数初始化列表及初始化成员变量的误区
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: [cpp] view plaincopy class CExample { pub ...
- c++初始化成员列表_C++ 类构造函数初始化列表
关注我们更多精彩等你发现! 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: 上面的例子中两个构造函数的结果是一样的.上面的构造函数 ...
- 10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函数
首先回忆下,以前学的const 单独使用const修饰变量时,是定义的常量,比如:const int i=1; 使用volatile const修饰变量时,定义的是只读变量 使用const & ...
- C++ explicit禁止单参构造函数隐式调用
1.单参数构造函数隐式调用 C++中单参数构造函数是可以被隐式调用的,主要有两种情形会隐式调用单参数构造函数: (1)同类型对象的拷贝构造:即用相同类型的其它对象来初始化当前对象. (2)不同类型对象 ...
- C++构造函数初始化列表与构造函数中的赋值的区别
转载 C++构造函数初始化列表与构造函数中的赋值的区别 2016-12-10 15:16:51 xingpacer 阅读数 10391更多 分类专栏: C++相关 查看全文 http://www.ta ...
- 1. 创建一个桌子Table类,该类中有桌子名称,重量,桌面宽度,长度及桌子高度属性。要求: ① 设计并画出桌子Table类类图; ② 用构造函数初始化所有数据成员; ③ Area() :计算桌面的
题目 1. 创建一个桌子Table类,该类中有桌子名称,重量,桌面宽度,长度及桌子高度属性.要求: ① 设计并画出桌子Table类类图: ② 用构造函数初始化所有数据成员; ③ Area() :计 ...
最新文章
- Spinnaker部署
- apply call this arguments caller callee
- python有哪些方向、应该怎么学-终于找到深圳学Python,有几个方向?怎么从一个方向学到底...
- Zabbix基本配置及监控主机
- Linux 链接详解----动态链接库
- 在计算机技术领域中数据库一词泛指,数据库原理模拟试题.doc
- NIPS 2017论文解读 | 基于对比学习的Image Captioning
- 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
- HTML5编程实战之二:用动画的形式切换图片
- python入门(5)使用文件编辑器编写代码并保存执行
- Arch Linux 安装总结
- javase 的一些基础常用类
- div无法触发blur事件解决的方法
- li下的ul----多级列表
- java的反射机制(第二篇)
- ViewState EnableViewState 禁用与使用心得
- 五、OpenCV-python 之图像处理(Ⅲ)——傅里叶变换
- 移动前端开发的一些简单分类!
- 写给那些让我糊里糊涂的HTTP、TCP、UDP、Socket
- 收藏 一句话问答 linux