C++ 为什么要virtual析构函数
2015-12-25 17:05
330 查看
class A { public: A() { printf("A()\n"); } virtual ~A() { printf("~A()\n"); } }; class B { public: B() { printf("B()\n"); } ~B() { printf("~B()\n"); } }; class C:public A, public B //继承用“,”隔开每个类前面必须有public否则默认为private { public: C() { printf("C()\n"); } ~C() { printf("~C()\n"); } }; int _tmain(int argc, _TCHAR* argv[]) { { C c; //可以正确构造和析构 } { A *a = new C; delete a;//有virtual会一次调用C,A,B的析构函数,正确执行 } { B *b = new C; delete b;//没有virtual会直接调用B的析构,不会调用A,C的析构函数错误 } getchar(); return 0; }
相关文章推荐
- C++学习:const关键字和常量
- C++代码优化
- C++ 函数指针
- C++小题(三)
- C++实现大数除法
- 【转】C语言中内存分配
- C++标准库--cctype
- 如何用C语言画一个“圣诞树”
- 函数模板与类模板的简单实例
- VS2013 C++ Unicode环境下 BYTE 数组转CString的方法
- C++ 11 在 Qt 5 中的应用
- android bionic (Android的C/C++调用库)目录结构
- c++视频编辑代码小结
- C++了解2
- 《C++Primer 5e》学习笔记(2):字符串、向量和数组
- C语言宏定义##连接符和#符的使用
- C/C++面试题精选
- VC++关键字
- 课程设计 广度优先探索—迷宫问题
- VC++关键字-"__declspec"