我具体解释一下,因为你这个B是从A派生出来的,因此构造的时候先构造A再构造B,然后你在B的构造函数中new了一个A,于是又构造了一个A。注意:B和第二个A完全是由于你构造函数中的语句顺序决定的,如果你先new再cout,B和A就反过来了。
同理析构的时候先析构B再析构A,在析构B的时候它先cout再delete A,因此顺序是~B~A~A,第一个A对应的是delete 的那个A。
你说的析构函数应该与构造函数相反只适用于不看new出来的那个A的情况,这个A的顺序完全是由你写的语句顺序决定的。踢掉这个A后,顺序就是AB~B~A
cout<<"~B"<
既然觉得相反 这两句的位置为什么不倒一倒?
你可是先cout B再new A的. 要相反自然要先delele A再cout ~B