30)构造函数的初始化列表
初始化你的类的成员变量,不能在定义那块给初始化,必须在 构造函数那里,或者在 初始化列表那里
就是 你想要 初始化 一个类的对象成员,你需要把他写在你的 初始化参数列表里面
类成员是对象 在初始化列表那里 初始化
类成员是常量,,在初始化列表那里初始化
1)如果 我们有一个类成员,他本身是一个类或者一个结构,而且这个成员它只有一个带参数的构造函数,没有默认的构造函数,这时要对这个类成员进行初始化,
就必须调用这个类成员带参数的构造函数
如果没有初始化列表,那么他将无法完成第一步,就会报错。
2)在一个类A中,有另一个类B,然后,我在A的构造函数中初始化B,没法写,比如:
1 //我就是想用B的构造函数来初始化B的成员变量 2 class A{ 3 4 private: 5 B b1; 6 B b2; 7 int a; 8 public: 9 A(B &b1,B &b2,int a) 10 { 11 this->a=a; 12 b1=b1; //这个调用的是那个构造符函数(=),这个不是调用B的构造函数 13 b1(b1); //这个是将b1看成一个函数了,这个不行,这个不是调用的B的构造函数, 14 15 } 16 17 18 19 20 }
3)所以就有了 构造函数的初始化列表这个东西。
4)构造对象成员的顺序和初始化列表的顺序无关,而是和成员对象的定义顺序有关
private:
B b1;
B b2;
int a;
5)还有这个里面的 a初始化 也可以这样:
1 public: 2 B(int a):a(10) 3 { 4 //然后这个里面什么东西也没有,或者可以加别的东西,反正对变量的初始化,没有了 5 }
详细可以见:台式机的桌面:
C:\Documents and Settings\Administrator\桌面\C++基础教程完整版视频\02_C++基础\day03\3_视频 第十一个视频
6)常量 初始化,也是在初始化列表中,初始化。
就是 类中变量含有 const 型的变量,必须在初始化列表中初始化它