virtual析构函数
2015-12-05 16:47
309 查看
一、文章来由
同样项目中是遇到这个问题~~二、直接上代码来的清楚
[code]#include <iostream> using namespace std; class Father { public: Father() { cout<<"父类诞生了"<<endl; } ~Father() { cout<<"父类挂了"<<endl; } protected: private: }; class Kid : public Father { public: Kid() { cout<<"子类诞生了"<<endl; } ~Kid() { cout<<"子类挂了"<<endl; } protected: private: }; int main() { Father *f = new Kid(); delete f; //只delete父类,子类不会被析构 cout<<endl; Father *f1 = new Kid(); delete (Kid *)f1; return 0; }
这样在调用父类析构函数时,并不会析构子类,于是运行结果如下:
但是如果让父类的析构函数是virtual的,就可以正常析构子类,可见多态在c++里面有多强大~~
[code] virtual ~Father() { cout<<"父类挂了"<<endl; }
相关文章推荐
- PING通,无法打开网站
- OC-10.类的扩展
- PHP识别但是不识别
- commons-fileupload 核心API 分析
- MAVEN向本地仓库导入jar包
- CPU调度与死锁
- 数列中不含1,将含有1的数字全部去掉(管理员不喜欢1,1排序问题)
- 如何解决SQL Server 2014 无法连接到(local)
- 事务
- 解决apache 443端口被占用
- OOP面向对象技术初识
- 模式的快速匹配与查找
- H5中需要掌握的 ANIMATION 动画效果
- TS科普22 PAT PMT PES关系
- android(26)(使用开源框架xutils实现多线程断点下载)
- 信息安全系统设计基础第十三周学习总结
- OC中的字符串(NSString)、字符串数组(NSArray)和字典(NSDictionary)
- Facade(外观)设计模式
- 查看端口
- lintcode 主元素