为什么QWidget的析构函数不是虚拟的?

S B*_*S B 16 c++ virtual qt qwidget

看看qwidget.h,我发现了析构函数如下:

~QWidget();
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这不是虚拟的

joh*_*ohn 24

析构函数是虚拟的,因为QWidget派生自QObject,它具有虚拟析构函数.为什么它没有在代码中声明为虚拟,无论是样式问题还是无害的错误.我会自己宣布它是虚拟的.

  • 实际上,在C++中,子类中的方法是虚拟的,如果它在基类中声明为这样,那么在这种情况下,QWidget不需要虚拟关键字.像John一样,我也会为子类添加virtual关键字. (5认同)
  • @john,我的假象是"虚拟"并没有隐含地沿着继承链流下来.事实证明我错了.感谢您指出了这一点! (2认同)