[英]C++ Qt base class virtual destructor
我们是否需要一个用于Qt-way的类的虚拟析构函数:设置QObject
-parent,它将调用QObject的析构函数deleteLater()
或者类似于它被设置为父类的任何对象?
例如:
class MyWidget : public QWidget {
public:
MyWidget() {
w = new QWidget(this);
// "w" will be deleted automatically by parent MyWidget::QWidget::QObject's destructor afaik
}
private:
QWidget *w;
}
我们是否需要MyWidget
类的虚拟析构函数才能继承它? 我没有理由这样做,因为它没有删除任何内容,并且从QObject
派生的类的每个属性都将从MyWidget :: QWidget :: QObject的析构函数中删除。
如果您添加或不添加它并不重要,因为QWidget
继承的QObject
具有虚拟析构函数,并且它在整个层次结构中传播。
您不需要显式编写(空) virtual
析构函数,因为QWidget
已将其析构函数标记为virtual
,因此类层次结构的所有析构函数都是virtual
。
但一般来说,如果你编写一个将要继承的类(并且还没有带有virtual
析构函数的基类),那么总是指定一个virtual
析构函数,否则如果有人试图销毁一个对象,事情就会严重破坏您的类层次结构通过基类类型的指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.