| title | date | tags | categories | |||
|---|---|---|---|---|---|---|
|
C++抽象类子类实例化的析构
|
2020-03-06 04:03:16 -0800
|
|
|
在C++使用抽象类时会面临一个问题,根据其派生类实例出来的对象,如何释放内存,需要用道虚析构,C++将从最底层依次向上调用析构函数
示例
- 定义类
class Animal {
public:
virtual void Run() = 0;
//定义一个虚析构函数,但不能为纯虚函数
//如果没有visual将不会调用子类的析构
virtual ~Animal() { cout << "del animal" << endl; }
};
class Cat : public Animal {
void Run() { cout << "猫步轻悄" << endl; }
~Cat() { cout << "del cat" << endl; }
};
抽象类的析构前要加'virtual',否则不会调用子类的析构
- 实例化演示
int main() {
Animal *ani = new Cat;
ani->Run();
delete ani;
return 0;
}
- 输出
猫步轻悄
del cat
del animal
本文深入探讨了C++中抽象类的概念及其在派生类实例化中的应用,重点讲解了虚析构函数的重要性,通过示例代码演示了如何确保派生类的析构函数被正确调用,避免内存泄漏。
8527

被折叠的 条评论
为什么被折叠?



