构造函数的顺序是:先调用父类构造函数,然后调用成员变量构造函数,再运行本身的构造函数
ABA分别为父类构造函数,本类构造函数(因为是先输出B,然后创建的A)
析构的顺序正好相反,先调用本类析构函数,然后调用成员变量析构函数,再运行父类的析构函数
正常来说。你在构造函数里使用new创建了一个对象,应该再析构函数里写delete这个对象。delete函数相比较C里面的Free,最大的特点就是delete会调用对象的析构函数
所以你delete p就会析构A
最后再调用父类的析构函数
所以为~B~A~A
p进行的操作出来的第三个A,调用B的析构函数,输出-B-A,调用A的析构函数出来的-A,差不多这样!