C++中最容易被人忘记的构造函数初始化列表
来源:互联网 发布:志鸿优化设计历史答案 编辑:程序博客网 时间:2024/06/04 18:49
需要用构造函数初始化列表
1、 初始化的数据成员是对象
2、类的成员变量被const修饰
3 、需要初始化引用成员数据
不需要初始化的有
1、 指针
2.、static 标记的,static const 也不需初始化列表中
static属于类并不属于具体的对象,所以 static成员是不允许在类内初始化的。
初始化的数据成员是对象相关案例
类中的对象的初始化顺序 跟初始化列表无关, 而跟对象的定义顺序有关
class A { public: A(int a) { m_a = a; cout << "A(int a) a = "<< m_a << endl; } ~A() { cout << "~A()... a = "<< m_a << endl; } void printA() { cout << "a = " << m_a << endl; } private: int m_a; }; class B { public: //构造函数初始化列表 B(int b, int a1_value, int a2_value):a1(a1_value), a2(a2_value), m_b(b) { } void printB() { cout << "b = " << m_b << endl; a1.printA(); a2.printA(); } ~B() { cout << "~B()" << endl; } private: int m_b; A a2; A a1; };
类的成员变量被const修饰相关案例
class ABC{public: ABC() { m_a = 0; m_b = 0; m_c = 0; } ABC(int a, int b, int c) { m_a = a; m_b = b; m_c = c; } ABC(const ABC & another) { m_a = another.m_a; m_b = another.m_b; m_c = another.m_c; }private: int m_a; int m_b; int m_c;};class ABCD{public: ABCD() :m_m(0) { m_d = 0; } ABCD(int d):m_m(0) { } ABCD(int a, int b, int c, int d) : abcObj(a, b, c), m_m(0){ m_d = d; } ABCD(ABC &abc, int d) : abcObj(abc) ,m_m(0) { m_d = d; }private: ABC abcObj; int m_d; const int m_m; };
需要初始化引用成员数据案例
class A{ public: A(int &n,int m = 12):b(n),a(m){} ~A(){} private: const int a; int& b;}
0 0
- C++中最容易被人忘记的构造函数初始化列表
- 【C/C++】构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- 构造函数的初始化列表
- C++ 中使用构造函数初始化列表和普通构造函数内部初始化的区别
- 构造函数初始化列表(C++)
- 在构造函数中必须用初始化列表的情况
- 一种编写C++构造函数中初始化列表的格式
- Docker存储驱动之AUFS简介
- The Relation Between Gradient Descent and Cost Funtion(To be continued)
- 编译caffe
- 图解Linux命令之--fsck命令
- 获取其他进程的fs寄存器
- C++中最容易被人忘记的构造函数初始化列表
- 第6章 图的基本算法
- 你都付出了哪些努力
- HDU2026 首字母变大写
- Is it a Tree? 并查集 坑多
- POJ 3051 Satellite Photographs 可能会
- POJ1838 banana 并查集
- bzoj4730
- BZOJ2124 等差子序列