77问答网
所有问题
C++中,为什么需要定义析构函数为虚函数
如题所述
举报该问题
推荐答案 2017-01-05
析构函数不一定是虚函数哦。定义为虚函数的目的一般是用父类管理子类,父类析构时就会调用子类的析构函数(其实就是多态),直接用父类释放子类。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/3YppYWvIpWWqIqppvW.html
其他回答
第1个回答 2017-01-05
因为指针和引用的存在啊,C++支持多态,那么如果不定义成虚函数,当基类类型的指针实际指向一个派生类对象的时候,它就不能够正确调用析构函数了,如果不是虚函数,它会只去调用基类类型的析构函数,这显然不是我们所需要的。
本回答被网友采纳
第2个回答 2017-01-05
初始化和释放资源
~~~~~~~~~~
相似回答
为什么
类的
析构函数定义为虚函数
答:
因为指针和引用的存在啊
,C++
支持 多态 ,那么如果不
定义成 虚函数
,当 基类 类型的指针实际指向一个 派生类 对象的时候,它就不能够正确调用 析构函数 了,如果不
是虚函数,
它会只去调用基类类型的
析构函数,
这显然不是我们所需要的。
什么情况下,类的
析构函数
应该声明
为虚函数
?
为什么
?
答:
虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象
。如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可...
C++中为什么
基类
析构函数
一般
要
声明
为虚函数
答:
类析构函数要声明为虚函数这样派生类调用析构函数才能层层回调,释放资源
。这也是虚函数的作用--提供回调的指针。
C++中为什么
将
析构函数
生命
为虚函数
?尤其是在继承机制中
答:
因为子类的成员需要先于父类被摧毁.
虚函数
能够确保在子类
析构函数
调用前父类析构函数不会被意外调用.
析构函数为什么是虚函数
?
答:
析构函数可以为虚函数,也可以不为虚函数。(更多的时候不为虚函数)。设计
析构函数为虚函数,
主要是考虑到继承。析构函数(destructor) 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了...
为什么
基类中的
析构函数要
声明
为虚析构函数
答:
解答 用对象指针来调用一个函数,有以下两种情况:如果
是虚函数,
会调用派生类中的版本。如果是非虚函数,会调用指针所指类型的实现版本。析构函数也会遵循以上两种情况,因为析构函数也是函数嘛,不要把它看得太特殊。 当对象出了作用域或是我们删除对象指针
,析构函数
就会被调用。当派生类对象出了作用...
C++
既然是子类先
析构
(子类堆区有数据),系统直接调用子类的析构就完了...
答:
1. 基类
析构函数
加 virtual 声明,则类会产生
虚函数
表;可以做到运行时确定调用的对象;2. 一旦基类构函数加 virtual 声明,则子类与子类的子类可加可不加 virtual 声明,(推荐加上virtual 声明),都会产生虚函数表;有以上两个知识点可知:当一个 基类指针对象 析构的时候,会从虚函数表中确定析...
大家正在搜
为什么析构函数要定义成虚函数
为什么基类的析构函数是虚函数
构造函数和析构函数都可以是虚函数
构造函数为什么不能为虚函数
析构函数可以声明为虚函数
析构函数中调用虚函数
析构函数可以是虚函数
基类析构函数可以是非虚函数
析构函数纯虚函数
相关问题
c++中 析构函数中可以调用虚函数么
C++中,为什么需要定义析构函数为虚函数
c++ 为什么析构函数必须声明为虚函数
在C++中,为什么有时析构函数必须写为虚函数
C++ 为什么将析构函数定义为纯虚函数 编译器报错一个无法解...
c++ 中 为什么要将析构函数设置成虚函数?
在C++中,能否声明虚构函数?为什么?能否声明虚析构函数?为...
C++中能不能将析构函数定义为纯虚函数?