我有一个场景,我正在编写一些深入的面向对象的代码,具有多层抽象基类,我想知道是否必须为每一个显式声明一个析构函数。
编译器会生成一个已经是虚拟的默认值,还是我必须告诉它?
最佳答案
默认析构函数不是虚拟的。如果您将基类的析构函数声明为虚拟,则子类的析构函数将被覆盖,因此即使没有明确声明它们也是虚拟的。
如果你有一个类层次结构并且你的基类没有声明析构函数是虚拟的,GNU GCC 编译器甚至会给出警告,因为你很可能希望它是。
关于c++ - 使用虚拟析构函数,我是否需要为每个子类显式声明一个虚拟析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610135/