【问题标题】:Why is QWidget's destructor not virtual?为什么 QWidget 的析构函数不是虚拟的?
【发布时间】:2011-10-29 12:00:26
【问题描述】:

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

~QWidget();

我想知道为什么不将其声明为虚拟

【问题讨论】:

    标签: c++ qt virtual qwidget


    【解决方案1】:

    析构函数是虚拟的,因为 QWidget 派生自 QObject,它确实有一个虚拟析构函数。为什么它没有在代码中声明为 virtual 要么是样式问题,要么是无害的错误。我会自己宣布它是虚拟的。

    【讨论】:

    • 实际上,在 C++ 中,如果子类中的方法在基类中声明为虚拟方法,那么在这种情况下,QWidget 不需要 virtual 关键字。像 John 一样,我也会为子类添加 virtual 关键字。
    • @john,我有一种错误的印象,即virtual 不会隐式地沿继承链向下传递。原来我错了。感谢您指出这一点!
    猜你喜欢
    • 2015-11-12
    • 2011-09-30
    • 2012-11-03
    • 2012-03-09
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2021-07-17
    • 2011-02-04
    相关资源
    最近更新 更多