C++虚析构函数
2016-04-18 16:02
671 查看
如果基类中存在一个指向动态分配内存的成员变量,并且基类的析构函数中定义了释放该动态分配内存的代码,那么就应该将基类的析构函数声明为虚函数,这样可以将子类对象中的开辟的动态空间回收。
#include <iostream> using namespace std; //基类 class Base{ private: int *a; public: Base(); virtual ~Base(){ cout<<"Base destructor"<<endl; } }; Base::Base(){ a = new int[100]; cout<<"Base constructor"<<endl; } //派生类 class Derived: public Base{ private: int *b; public: Derived(); ~Derived( ){ cout<<"Derived destructor"<<endl; } }; Derived::Derived(){ b = new int[100]; cout<<"Derived constructor"<<endl; } int main( ){ Base *p = new Derived; delete p; return 0; }
运行截图
相关文章推荐
- C++ STL中vector的内存机制和性能分析
- C语言结构体的字节对齐原则
- C++时间,文件及字符常用函数总结
- c++实现mysql数据库数据缓存
- 贪吃蛇C语言代码
- 【C++】日期类+日期万年历+日期计算器
- 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)
- 介绍一个类型安全的回调库:libsigc++
- C语言中的可变参数列表
- C语言获取汉字拼音首字母
- Item 05:了解C++默默编写并调用哪些函数
- 深度探索C++关键字之 virtual
- 犯过错误的C语言问题
- C++_运算符重载
- Machine learning algorithms-Dlib C++ Library
- 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
- 大数运算(小项目)
- 《关于C++中运算符的重载》
- OpenCV2.4.10之samples_cpp_tutorial-code_learn------安装配置与第一个Opencv程序
- 【C++】String类