【C/C++】虚析构函数
2018-01-19 13:54
232 查看
直接从代码看结果
输出:
Base Constructor
Derived Constructor
Base Destructor
输出:
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor
编译出错:
undefined reference to `Base::~Base()’
输出:
Base Constructor
Derived Constructor
Derived Destructor
// demo 1 class Base { public: Base() { cout << "Base Constructor" << endl; } ~Base() { cout << "Base Destructor" << endl; } }; class Derived : public Base { public: Derived() { cout << "Derived Constructor" << endl; } ~Derived() { cout << "Derived Destructor" << endl; } }; int main() { Base *obj = new Derived(); delete obj; }
输出:
Base Constructor
Derived Constructor
Base Destructor
// demo 2, 更改Base析构函数的定义,其他不变 class Base { public: Base() { cout << "Base Constructor" << endl; } virtual ~Base() { cout << "Base Destructor" << endl; } };
输出:
Base Constructor
Derived Constructor
Derived Destructor
Base Destructor
// demo 3, 更改Base析构函数的定义,定义为纯虚函数 class Base { public: Base() { cout << "Base Constructor" << endl; } virtual ~Base() = 0; };
编译出错:
undefined reference to `Base::~Base()’
// demo 4, 定义Base的析构函数为纯虚函数,并且实现 class Base { public: Base() { cout << "Base Constructor" << endl; } virtual ~Base() = 0; }; Base::~Base() { }
输出:
Base Constructor
Derived Constructor
Derived Destructor
继承关系下的析构函数定义为虚函数
构造函数不能为虚函数
纯虚函数可以有其实现
相关文章推荐
- c++虚析构函数
- C++虚析构函数
- C++学习:虚函数,纯虚函数(virtual),虚继承,虚析构函数
- 为什么用虚析构函数C++
- C++中的虚析构函数、纯虚析构函数详解
- C++ 类的多态四(虚析构函数的重要性)
- C++虚析构函数解析
- C++中,什么是纯虚函数,什么是抽象类,什么是虚析构函数
- C++ 虚析构函数
- C++中的虚析构函数
- C++中基类的析构函数为什么要用virtual虚析构函数
- C++ 继承特性的小探讨——基类虚析构函数
- C++继承中构造函数、析构函数调用顺序及虚析构函数
- c++基类不为虚析构函数的一个风险
- C++ 虚析构函数的作用
- c++ 虚析构函数的思考
- c++ 虚析构函数
- C++中的虚析构函数
- c++复习基础要点03 虚析构函数、虚函数表
- C++学习之多态篇(虚函数和虚析构函数的实现原理--虚函数表)