当前位置: 技术问答>linux和unix
Linux 下析构函数为什么不是虚函数?
来源: 互联网 发布时间:2016-04-21
本文导语: 我用的REDFLAG带的开发工具KDevelop,生成项目里面有QT的组件。开发环境自动生成一个类时,他自动生成类里的析构函数为什么不是虚函数,在Windows下VC生成的类的析构函数默认都是虚函数的,这是为什么? ...
我用的REDFLAG带的开发工具KDevelop,生成项目里面有QT的组件。开发环境自动生成一个类时,他自动生成类里的析构函数为什么不是虚函数,在Windows下VC生成的类的析构函数默认都是虚函数的,这是为什么?
|
为什么析构函数一定要是 虚函数?
不一定吧
不一定吧
|
Vc或许是把基类的析构函数强制为虚函数,预防子类出现内存泄漏的情况。
不是虚函数,才是真正的默认。
不是虚函数,才是真正的默认。
|
要做基类的时候,才叫做 虚析构函数,
不过虚析构函数是有成本的,要维护
虚函数表?
不过虚析构函数是有成本的,要维护
虚函数表?
|
我自己写类的时候都用的是虚函数,我没用过qt,
不过在类比较小,或是不需要被继承的情况下,花代价去维护一个虚函数表貌似就没多大意义了
也许qt对 is-a概念用的不多,或是不大赞成这样的使用,这样的话少维护个虚函数表就比较说的通了
不过在类比较小,或是不需要被继承的情况下,花代价去维护一个虚函数表貌似就没多大意义了
也许qt对 is-a概念用的不多,或是不大赞成这样的使用,这样的话少维护个虚函数表就比较说的通了
|
具体需求 具体分析!!!
虚不虚 不是Tool kits说的算的
虚不虚 不是Tool kits说的算的
|
要视代码而定.
做为基类,且派生类的构造函数构造了自己的一些数据且申请了动态内存,此时就得用virtual destructor解决.
做为基类,且派生类的构造函数构造了自己的一些数据且申请了动态内存,此时就得用virtual destructor解决.
|
mark~
一下.
一下.
|
说的对!
即使是工具生成的也可以修改啊!