第21课-对象的构造顺序
1. 问题
-
C++中的类可以定义多个对象,那么对象的构造顺序是怎样的?
2. 对象的构造顺序一
-
对于局部对象
- 当程序执行流到达对象的定义语句时进行构造
-
下面程序中的对象构造顺序是什么?
int i = 0; Test a1 = i; while( i < 3 ) Test a2 = ++i; if( i < 4 ) Test a = a1; else Test a(100);
3. 对象的构造顺序二
- 对于堆对象
- 当程序执行流到达new语句时创建对象
- 使用new创建对象将自动触发构造函数的调用
-
下面程序中的对象构造顺序是什么?
int i = 0; Test* a1 = new Test(i); while( i < 3 ) Test* a2 = new Test(++i); if( i < 4 ) new Test(*a1);else new Test(100);
4. 对象的构造顺序三
-
对于全局对象
- 对象的构造顺序是不确定的
- 不同的编译器使用不同的规则确定构造顺序
5. 小结
-
局部对象的构造顺序依赖于程序的执行流
-
堆对象的构造顺序依赖于new的使用顺序
-
全局对象的构造顺序是不确定的
本文出处:狄泰软件学院
浙公网安备 33010602011771号