c++ - 没有虚拟方法的虚拟析构函数有什么坏处吗?

标签 c++ virtual-destructor

<分区>

在我的设计过程中,有时我会遇到添加/删除虚拟方法的情况。我知道的经验法则是,一旦我有了虚方法,我就会有一个虚析构函数。

我的问题:如果我在创建类时立即添加虚拟析构函数(即使还没有虚拟方法),会有什么危害吗?基本上这个想法是不要以后忘记它。特别是对于 n 个派生类,我以后不需要在 n 个地方更改它。

最佳答案

虚函数表的大小有微小的开销。可能不值得担心。虚拟析构函数还将使您的类成为非聚合类、非平凡类、非标准布局类,因此也是非 POD 类。这可能是不可取的,具体取决于手头的问题。

但是,我建议专门将您的类设计为多态或非多态。如果要以多态方式使用它们,请给它们一个虚拟析构函数。如果没有,不要。如果您需要更改它,请在需要时进行。

关于c++ - 没有虚拟方法的虚拟析构函数有什么坏处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597962/

相关文章:

具有固定大小数组成员的结构的 C++ 大括号初始化

c++ - 单个指针是否可以指向两个或多个变量

4 级继承链中的 C++ 虚拟析构函数。

c++ - 为什么当派生类的析构函数是非虚函数时基类析构函数调用派生对象?

c++ - 基类中 protected 非虚拟析构函数

c++ - 什么时候使用虚拟析构函数?

c++ - 我不明白析构函数有什么问题?

c++ - 施奈尔河豚

c++ - 单例析构函数

c++ - __func__ 外部函数定义