#include <iostream> using namespace std; class BaseClass{ //基类 public: virtual ~BaseClass(){ cout<<"基类BaseClass析构"<<endl; } }; class DerivedClass:public BaseClass{ //派生类 public: ~DerivedClass(){ cout<<"派生类DerivedClass析构"<<endl; } }; void main(){ BaseClass *bp = new DerivedClass(); //基类指针 -> 指向:派生类对象 delete bp; }解释程序输出结果
时间: 2024-02-06 10:02:27 浏览: 69
使用include <iostream>时一定要加using namespace std
这段程序的输出结果为:
```
派生类DerivedClass析构
基类BaseClass析构
```
程序中定义了两个类,分别为 `BaseClass` 和 `DerivedClass`,`DerivedClass` 是从 `BaseClass` 派生而来的。在 `main` 函数中,先定义了一个指向 `DerivedClass` 对象的 `BaseClass` 指针 `bp`,然后通过 `delete` 释放了该指针指向的内存空间。
由于 `BaseClass` 的析构函数是虚函数,因此在通过 `delete` 释放对象时,会先调用 `DerivedClass` 的析构函数,再调用 `BaseClass` 的析构函数。因此程序的输出结果中,先输出了派生类 `DerivedClass` 的析构函数的信息,再输出了基类 `BaseClass` 的析构函数的信息。
阅读全文