程序员面试金典: 9.13 C和C++ 13.6基类的析构函数为何要声明为virtual?
2017-01-13 16:10
274 查看
问题:基类的析构函数为何要声明为virtual?
分析:如果不声明为virtual会导致子类在析构时,无法执行父类的析构函数,可能造成内存泄漏。
因为构造时,先执行父类构造函数,再执行子类构造函数,析构时,先执行子类的析构函数,再执行父类的析构函数
关键:从使用虚函数的角度来讲
1析构函数是用于释放内存的,如果之前用虚函数的用法:将父类指针指向子类的实例,那么删除
该父类指针的时候,如果析构函数不是virtual的,就直接调用父类的析构函数,而真正的析构函数实际是
子类的,这样就可能造成内存泄漏。
分析:如果不声明为virtual会导致子类在析构时,无法执行父类的析构函数,可能造成内存泄漏。
因为构造时,先执行父类构造函数,再执行子类构造函数,析构时,先执行子类的析构函数,再执行父类的析构函数
关键:从使用虚函数的角度来讲
1析构函数是用于释放内存的,如果之前用虚函数的用法:将父类指针指向子类的实例,那么删除
该父类指针的时候,如果析构函数不是virtual的,就直接调用父类的析构函数,而真正的析构函数实际是
子类的,这样就可能造成内存泄漏。
相关文章推荐
- [C++]把析构函数声明为virtual有什么好处?
- [C++基础]023_为什么要将基类的析构函数声明为Virtual?
- C++将多态基类的析构函数声明为virtual的作用
- C++里父类的析构函数为什么声明为virtual
- effect C++ 为多态基类声明virtual 析构函数
- [C++基础]023_为什么要将基类的析构函数声明为Virtual?
- [转]c++ 为什么要将基类的析构函数声明为Virtual?
- 基类的析构函数为何要声明为virtual
- c++之Item7在多态基类中将析构函数声明为virtual
- C++学习笔记25,永远将析构函数声明为virtual
- C++箴言:多态基类中将析构函数声明为虚拟
- C++ 中将构造函数,析构函数声明为private,protected
- C++学习笔记_3:多继承时的类声明及构造和析构函数
- delete 一个dll中的类指针时,由于是否显示声明virtual 析构函数导致的问题 (英文解答)
- 有继承的C++析构函数一定要用virtual
- C++中构造函数和析构函数(virtual)的执行顺序
- 多态基类应声明 virtual析构函数
- C++ 中将构造函数,析构函数声明为private,protected
- C++将析构函数定义成virtual的真正原因
- C++ 里virtual对析构函数的影响