必须在构造函数初始化列表里进行初始化的数据成员有哪些
2017-05-12 16:06
197 查看
一,必须在构造函数初始化列表里进行初始化的数据成员有哪些?
下面是一个自定义的Student类
1,常量成员
常量成员只能初始化不能赋值,所以必须放在初始化列表里。
2,引用类型
引用必须在定义时初始化,并且不能重新赋值,所以必须放在初始化表里。
3,对象成员
这个成员是其他类的对象,例如上面的Address addr成员。如果把它放在构造函数的初始化列表里,此时会调用Address类的copy constructor函数,对这个类对象进行初始化。如果把它放在构造函数体中,会先调用Address类的default constructor函数,然后再调用Address类的copy
constructor函数。从性能上考虑,把对象成员的初始化放在初始化列表里性能会更高。
下面是一个自定义的Student类
class Address{}; class Student{ private: const int grade; string &name; Address addr; public: Student(int grade, string name):grade(grade), name(name){} };
1,常量成员
常量成员只能初始化不能赋值,所以必须放在初始化列表里。
2,引用类型
引用必须在定义时初始化,并且不能重新赋值,所以必须放在初始化表里。
3,对象成员
这个成员是其他类的对象,例如上面的Address addr成员。如果把它放在构造函数的初始化列表里,此时会调用Address类的copy constructor函数,对这个类对象进行初始化。如果把它放在构造函数体中,会先调用Address类的default constructor函数,然后再调用Address类的copy
constructor函数。从性能上考虑,把对象成员的初始化放在初始化列表里性能会更高。
相关文章推荐
- C++数据成员必须在构造函数初始化列表中初始化
- C++必须使用【初始化列表】初始化数据成员的三种情况
- 构造函数调用构造函数进行数据成员初始化问题(极易出错)
- 构造函数,哪些成员变量一定要通过初始化列表来初始化?
- c++中什么类型的成员变量只能在构造函数的初始化列表中进行
- 必须使用【初始化列表】初始化数据成员的情况
- 使用初始化成员列表初始化数据与在构造函数中初始化数据
- 必须在构造函数的成员初始化列表里初始化
- 构造函数中,哪些成员变量一定要通过初始化列表来初始化
- 为什么对于类的const成员,只能使用初始化列表,而不能在构造函数内部进行赋值操作
- C++哪些数据必须使用初始化列表进行初始化?
- 必须使用【初始化列表】初始化数据成员的情况
- 没有默认构造函数的问题, 对于类成员变量有别的类成员,则在类 构造函数中也必须对那个类成员变量进行初始化,除非那个类 成员有默认构造函数
- 哪些东西必须放在构造函数的初始化列表中?
- 构造函数对数据成员进行初始化的方法
- const成员或者引用成员必须使用构造函数初始化列表的方式
- 何时构造函数必须使用初始化列表而不是赋值
- c++高级---C++类构造函数初始化列表以及对象成员的构造
- C/C++ 通过初始化列表和构造函数内赋值初始化成员变量的区别
- 构造函数的成员初始化列表