c++ 为什么析构函数必须声明为虚函数
来源:互联网 发布:ubuntu 传输文件 编辑:程序博客网 时间:2024/05/22 04:57
析构函数设为虚函数的作用:
解释:在类的继承中,如果基类不定义成虚函数,当有基类指针指向派生类, 那么delete基类指针时,只会调用基类的析构函数,不会调用派生类中派生类的析构函数。
如:
class Base{public: Base(){cout<<"Base"<<endl;} /*virtual*/ ~Base(){cout<<"~Base"<<endl;}};class Derive : public Base{public: Derive(){cout<<"Derive"<<endl;} virtual ~Derive(){cout<<"~Derive"<<endl;}};void testVirtualDestructor(){ Base *b = new Derive(); delete b;}int main(){ testVirtualDestructor(); return 0;}
执行结果:
阅读全文
0 0
- c++ 为什么析构函数必须声明为虚函数
- 为什么构造函数不可以被声明为虚函数而析构函数有时候必须声明为虚函数
- 为什么构造函数不能声明为虚函数,析构函数可以声明为虚函数
- 为什么析构函数常常必须为虚函数
- 为什么析构函数常声明为虚函数
- 为什么析构函数常声明为虚函数
- 为什么析构函数常常声明为虚函数
- 为什么析构函数常声明为虚函数
- 为什么析构函数常声明为虚函数?
- 为什么要将基类的析构函数声明为虚函数
- C ++为什么经常将析构函数声明为虚函数?
- 构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数
- 为什么构造函数不可以声明为虚函数,而析构函数最好声明为虚函数
- c++(重载、覆盖、隐藏)&&什么情况下,类的析构函数应该声明为虚函数?为什么?
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 为什么构造函数不能声明为虚函数,析构函数可以
- 自学react-native之必备知识点(ES6+ReactJS+flexbox)
- Linux搭建SVN
- 常用平台包名
- 设计模式-状态模式
- codeforces 794G. Replace All
- c++ 为什么析构函数必须声明为虚函数
- ORACLE Hints
- selenium webdriver方法qiut()close()区别
- 乐视断缴社保 乐视负债百亿 钱景堪忧!
- PCB布高速线——需要考虑信号传输延时
- 获取复选框的值
- spring学习笔记一
- xml文件解析的几种方式(一)
- Leetcode 208 Implement Trie (Prefix Tree)