首页 > 试题广场 >

设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构

[单选题]
设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为?
C c;
void main()
{
    A*pa=new A();
    B b;
    static D d;
    delete pa;
} 

  • A B C D
  • A B D C
  • A C D B
  • A C B D
设已经有AB,C,D4个类的定义,程序中ABCD析构函数调用顺序为?首先一个个的分析
对于类A,是建立在堆上的对象指针pa,手动释放
对于类B,是建立在栈上的对象 eb, main函数结束就释放
对类C在静态存储区创建了一个对象c程序结束时候释放
对类D也是在静态存储区建立对象d但是局部变量程序结束时候释放析构函数调用顺序
先调用A的析构因为 delete pa.A
再释放栈上的对象b
关键看CD的顺序
c是全局对象对它的初始化是在main函数之前所以析构时候要放在最后也就是先析构d,然后再析构c

发表于 2020-10-10 20:54:27 回复(0)
先构造的后析构,后构造的对象有可能依赖于先构造的对象,如果先构造的对象先析构了,构造的对象就依赖于一个无效的空间。
发表于 2020-09-24 20:37:18 回复(0)
有些忘了哈,delete肯定先析构,然后函数内部声明的这个析构,最后全局域对象和静态对象按后声明的先析构?求大佬指教是不是这样。
发表于 2020-09-16 04:48:31 回复(0)
同一存储区的对象,先构造的后析构?
发表于 2022-02-08 13:33:43 回复(0)
<p>我以为是java的构造函数呢</p><p><br></p>
发表于 2020-11-23 18:51:59 回复(0)