C++ 里virtual对析构函数的影响
2011-09-19 18:09
155 查看
首先来说一下,Super是一个超类,Sub是一个子类
下面代码的前提是,这两个类都定义了virtual的析构函数
这时用delete superTest, 调用析构函数的顺序是,先是超类的(即Super),再是子类的(即Sub)。
但是如果那两个类的析构函数没有定义virtual
这时用delete superTest 只会调用超类的析构函数,子类的析构函数没有被调用,即是说子类的内在空间没有被释放
下面代码的前提是,这两个类都定义了virtual的析构函数
Super* superTest = new Sub(); delete superTest;
这时用delete superTest, 调用析构函数的顺序是,先是超类的(即Super),再是子类的(即Sub)。
但是如果那两个类的析构函数没有定义virtual
这时用delete superTest 只会调用超类的析构函数,子类的析构函数没有被调用,即是说子类的内在空间没有被释放
相关文章推荐
- virtual 修饰符与继承对析构函数的影响(C++)
- 有继承的C++析构函数一定要用virtual
- C++中virtual 析构函数
- effect C++ 为多态基类声明virtual 析构函数
- 详解 C++ virtual 析构函数
- C++中基类的析构函数为什么要用virtual虚析构函数
- 详解 C++ virtual 析构函数
- C++中基类的析构函数为什么要用virtual虚析构函数
- c++ 析构函数为什么要加virtual
- 【日常】C++ 的那些“坑” —— delete 与 析构函数 与 virtual 的 9 个小例子
- C++中构造函数和析构函数(virtual)的执行顺序
- 程序员面试金典: 9.13 C和C++ 13.6基类的析构函数为何要声明为virtual?
- 多态时最好将基类的析构函数设为virtual、 C++中两个类相互包含引用问题 (转载)
- C++中基类的析构函数为什么要用virtual虚析构函数
- C++析构函数必须要用virtual修饰的原因
- C++将析构函数定义成virtual的真正原因
- C++中构造函数和析构函数(virtual)的执行顺序
- C++中为什么要将析构函数设为virtual
- c++之Item7在多态基类中将析构函数声明为virtual
- C++学习笔记25,析构函数总是会宣布virtual