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

18

看了一下qwidget.h文件,我找到了以下析构函数:

~QWidget();

我想知道为什么这个函数没有声明为虚函数

1个回答

27

析构函数是虚拟的,因为QWidget派生自QObject,而QObject有一个虚拟析构函数。为什么代码中没有声明为虚拟的原因可能是风格问题或无害的错误。我会自己声明为虚拟的。


5
在C++中,如果在基类中声明了子类的方法为虚函数,则该方法在子类中也是虚函数,因此QWidget中不需要使用virtual关键字。与John一样,我也会为子类添加virtual关键字。 - Tore Olsen
2
@john,我曾错误地认为virtual不会隐式地向下传递继承链。结果证明我错了。感谢你指出这一点! - S B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接