-- 先基类, 再成员, 然后自己
class A {
public:
A() { cout << "in A()" << endl; }
};
class B {
public:
B() { cout << "in B()" << endl; }
B(int i) { cout << "in B(int i)" << endl; }
};
class C {
public:
C() { cout << "in C()" << endl; }
};
class CC: public C {
public:
CC():b(10) { cout << "in CC()" << endl; }
public:
A a;
B b;
};
int main ()
{
CC c;
return 0;
}
#CC t.C
#./a.out
in C()
in A()
in B(int i)
in CC()
-- 关于类成员的初始化有两种方式
1. 构造函数的实现中
2. 定义初始化成员列表
其顺势为
1. 分配内存,调用成员变量的构造函数隐式/显示的初始化各成员数据
2. 进入类构造函数后执行构造函数内部的代码
3. 类成员变量的初始化顺序以成员在类中的声明为序, 而不管它在初始化成员列表的出现顺势。(这是因为定义的顺序是固定的, 而不同的构造函数其初始化成员列表的顺序可能不一样, 变编译器没法提供统一的工作模式)
下列情况下成员必须在初始化列表中完成初始化
1. 调用基类的非缺省构造函数
2. const类型数据成员
3. 引用类型的数据成员
C++构造函数详解
本文详细解析了C++中构造函数的执行流程,包括成员变量的初始化顺序、构造函数内部执行逻辑以及初始化列表的重要性。特别强调了在不同情况下成员变量初始化的必要性和正确做法。

被折叠的 条评论
为什么被折叠?



