可以详细解释一下此题的构造析构顺序吗?

每一个ABAB对应哪一个对象?
为什么不是AAB呢?
谢谢!

img

main()中构造B obj对象:先调用A的构造函数输出第一个A,然后调用B的构造函数,输出第一个B,在B构造函数又创建了A对象p,所以又调用了A的构造函数,输出第二个A,自此obj对象构造完毕
main()退出之前析构对象obj:先调用的是B的析构函数输出~B,在B析构函数中又删除了p对象,即调用了A的析构函数输出~A,最后调用obj对象的A析构函数输出~A

构造上大到小 析构是小到大
这里b是子类 a是父类
b类中有一个指针a类 所以不走构造函数
b对象先走父类的构造也就是A构造方法 打印A
然后走自己的构造 打印B
然后b构造里有A的new所以走A构造 打印A
然后主函数结束 释放B 因为b就是子类 B析构 打印B
然后走b父类的析构和成员的析构A 打印
A~A