C++ 虚析构函数用法
2013-12-18 19:21
281 查看
一、整体代码
二、运行结果
Child
IDemo
三、解释
如果父类析构函数不声明为virtual,那么在父类中delete this,只会调用子类的析构函数,不会调用父类的构造函数。
#include <iostream> using namespace std; class IDemo { public: virtual ~IDemo() { cout << "IDemo" << endl; }; void deleteObject() { delete this; } virtual void OverrideMe() = 0; }; class Child : public IDemo { public: virtual ~Child() { cout << "Child" <<endl; } virtual void OverrideMe() { cout << "OverrideMe" <<endl; } }; int main() { IDemo* demo = new Child; demo->deleteObject(); return 0; }
二、运行结果
Child
IDemo
三、解释
如果父类析构函数不声明为virtual,那么在父类中delete this,只会调用子类的析构函数,不会调用父类的构造函数。
相关文章推荐
- C++ 虚析构函数的用法
- 【原创】memset和memcpy用法总结 分类: Linux --- C Linux --- C++ 2014-11-11 20:45 70人阅读 评论(0) 收藏
- C++中 explicit的用法
- C++指向函数的指针用法详解
- C++ 中string.find() 函数的用法总结(转载)
- C++ 构造函数和析构函数的调用顺序、虚析构函数的作用
- C/C++ 下获取文件的信息,学习 _finddata_t 结构体用法 及相关函数用法的
- C++ boost 正则表达式用法
- c++ 中 stack 和 queue 的用法
- c++ 11 random库的简单用法
- C++ map用法
- c++中string的用法
- C++学习笔记(一)--基础知识sizeof用法
- C++浅析——继承类内存分布和虚析构函数
- C++ vector用法
- C++中extern "C"的用法
- C/C++中#,##,__FILE__,__LINE__等的用法
- C++ 虚析构函数
- C++模板template用法总结
- C++ vector 用法汇总