必须为多态基类声明 virtual 析构函数
2017-01-07 12:23
357 查看
class Animal { public: Animal() { cout << "Animal constructing" << endl; } virtual ~Animal() { cout << "Animal destructing" << endl; } virtual void MakeSound() const = 0 {} }; class Cat :public Animal { public: Cat() { cout << "Cat constructing" << endl; } ~Cat() { cout << "Cat destructing" << endl; } virtual void MakeSound() const{ cout << "Cat make sound." << endl; Animal::MakeSound(); } }; int main() { Animal * pcat = new Cat; pcat->MakeSound(); delete pcat;//如果基类的析构函数里没有使用 virtual ,这里会导致Cat的析构函数无法执行。 return 0; }
相关文章推荐
- c++之Item7在多态基类中将析构函数声明为virtual
- C++将多态基类的析构函数声明为virtual的作用
- Effective C++ 条款07 为多态基类声明virtual 析构函数
- effect C++ 为多态基类声明virtual 析构函数
- 当使用多态时,请为基类声明 virtual 析构函数
- Effective C++ 条款07 为多态基类声明virtual 析构函数
- 多态基类的析构函数必须加上virtual
- 关于多态基类的析构函数声明为virtual
- [翻译] Effective C++, 3rd Edition, Item 7: 在 polymorphic base classes(多态基类)中将 destructors(析构函数)声明为 virtual(虚拟)
- [C++基础]023_为什么要将基类的析构函数声明为Virtual?
- [C++基础]023_为什么要将基类的析构函数声明为Virtual?
- effective c++ 条款7,8(为多态基类声明virtual析构函数,别让异常逃离析构函数)
- 在基类中的析构函数声明为virtual
- C++箴言:多态基类中将析构函数声明为虚拟zz
- 第7条:将多态基类的析构函数声明为虚函数
- 条款07:为多态基类声明virtual析构函数(Declare destructors virtual in polymorphic base classes.)
- 若使用基类指针delete派生类对象,需将基类和派生类的析构函数声明为virtual
- (C++)浅谈多态基类析构函数声明为虚函数
- Item 7:将多态基类的析构函数声明为虚函数 Effective C++笔记
- Effective C++笔记之四 多态基类申明为virtual 析构函数