第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的使用顺序

  • 全局对象的构造顺序是不确定的

本文出处:狄泰软件学院

posted @ 2020-05-12 21:24  WisdomMan  阅读(1)  评论(0)    收藏  举报