<分区>
在我的设计过程中,有时我会遇到添加/删除虚拟方法的情况。我知道的经验法则是,一旦我有了虚方法,我就会有一个虚析构函数。
我的问题:如果我在创建类时立即添加虚拟析构函数(即使还没有虚拟方法),会有什么危害吗?基本上这个想法是不要以后忘记它。特别是对于 n 个派生类,我以后不需要在 n 个地方更改它。
<分区>
在我的设计过程中,有时我会遇到添加/删除虚拟方法的情况。我知道的经验法则是,一旦我有了虚方法,我就会有一个虚析构函数。
我的问题:如果我在创建类时立即添加虚拟析构函数(即使还没有虚拟方法),会有什么危害吗?基本上这个想法是不要以后忘记它。特别是对于 n 个派生类,我以后不需要在 n 个地方更改它。
最佳答案
虚函数表的大小有微小的开销。可能不值得担心。虚拟析构函数还将使您的类成为非聚合类、非平凡类、非标准布局类,因此也是非 POD 类。这可能是不可取的,具体取决于手头的问题。
但是,我建议专门将您的类设计为多态或非多态。如果要以多态方式使用它们,请给它们一个虚拟析构函数。如果没有,不要。如果您需要更改它,请在需要时进行。
关于c++ - 没有虚拟方法的虚拟析构函数有什么坏处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597962/