C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如果派生中没有数据成员,C是虚拟析构函数还是需要的吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有这个代码
class Base{
  public:
        int getVal();
  private:
         int a,b;
};

class Derived::public Base{
    public:
         void printval();
};

int main(){
    Base *b = new Derived();
    delete b;    
}

我知道一个虚拟析构函数会正确删除事物,但是使用基本指针(当没有虚拟析构函数)时,即使在派生类中没有虚拟函数也没有数据成员,这是不好的.如果这样做会发生什么?

解决方法

对于原始类型的数据,您的示例很可能在实践中工作.事实上,引发一个vtable可能会阻碍性能(因此这里可能有一些合法用途),但是在5.3-5.4中它在技术上是未定义的:

它完全取决于你的类中数据的“堆积”,而没有堆分配的成员(在你的情况下),你应该是好的,但它绝对是一个代码的气味.

大佬总结

以上是大佬教程为你收集整理的如果派生中没有数据成员,C是虚拟析构函数还是需要的吗?全部内容,希望文章能够帮你解决如果派生中没有数据成员,C是虚拟析构函数还是需要的吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。