标题中的嵌套类指的是一个类的对象作为另一个类的成员变量。简单例子如下:
class A {
public :
A() {
cout << "A" << endl;
}
~A() {
cout << "~A" << endl;
}
};
class B {
public :
A a; //A类的对象a作为B类的成员
B() {
cout << "B" << endl;
}
~B() {
cout << "~B" << endl;
}
};
上述代码中,B类有一个A类的对象成员。我们在主函数执行如下代码,通过观察输出顺序来判断嵌套类的构造函数与析构函数的执行顺序:
int main() {
B b;
return 0;
}
程序运行结果如下:

说明是先创建了A类对象,再创建B类对象。先执行A的构造函数,再执行B的构造函数。 在释放时,首先执行B的析构函数,再执行A的析构函数。
总结:上班比老板早(先创建自身),下班比老板晚(先释放老板)
| 构造函数 | 先创建子成员,再创建自身 |
| 析构函数 | 先释放自身,再释放子成员对象 |
文章讨论了C++中嵌套类情况下,类B的成员A类对象的构造与析构函数执行顺序,指出先创建A对象再创建B对象,且在析构时先释放B再释放A。

627

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



