using namespace std;class A { public : virtual ~A() {cout<<"DestructA" <<endl; }}; class B: public A {public: virtual ~B() {cout< <"DestructBT<< enaI; j); class C: public B {public: ~C() { cout << "DestructC" << endl; }}; int main() {A * pa = new C;delete pa;A a; return O;}
时间: 2024-04-28 13:26:01 浏览: 31
C++第八章内容
这段代码是一个简单的继承与多态的示例。它定义了一个基类 A,一个中间类 B,以及一个派生类 C。B 继承自 A,C 继承自 B。A 和 B 都定义了虚析构函数,而 C 重写了 B 的虚析构函数。
在 main 函数中,我们创建了一个 C 类型的对象,并将其赋值给一个 A 类型的指针 pa。然后我们用 delete 操作符释放了这个指针,这会自动调用 C 的析构函数,然后按照继承关系依次调用 B 和 A 的析构函数。
接着,我们创建了一个名为 a 的 A 类型对象。由于它不是通过 new 创建的动态对象,所以在 main 函数结束时会自动调用它的析构函数。
最终,这个程序的输出应该是:
DestructC
DestructB
DestructA
DestructA
阅读全文