问题
单项选择题
有如下程序: #include <lostream> using namespace std; class A{ public: A( ){cout<<"A";} ~A( ){cout<<"~A";} }; class B:public A{ A*P; public: B( ){cout<<"B";P=new A( );} ~B( ){cout<<"~B";delete P;} }; int main( ){ B obj; return 0; } 程序的输出结果是
A.BAA~A~B~A
B.ABA~B~A~A
C.BAA~B~A~A
D.ABA~A~B~A
答案
参考答案:B
解析: 基类与派生类的构造函数与析构函数的执行顺序是先执行基类的构造函数,然后执行派生类的构造函数。删除对象时,先执行派生类的析构函数,最后执行基类的析构函数成员。