首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QMainWindow析构函数

QMainWindow析构函数
EN

Stack Overflow用户
提问于 2012-10-19 23:11:12
回答 3查看 1.6K关注 0票数 2

为什么QMainWindow的析构函数不是虚拟的?如果我从QMainWindow继承了一个类MainWindow,并且在它上面有一些指针属性,我不能使用MainWindow的析构函数来删除内存。

EN

回答 3

Stack Overflow用户

发布于 2012-10-20 02:07:54

QMainWindow的析构函数是对已经存在的析构函数(QWidget::~QWidget())的覆盖,而后者又是虚拟析构函数(virtual QObject::~QObject())的覆盖。因此,QMainWindow::~QMainWindow()是虚拟的。同样的规则也适用于普通的成员函数。

票数 5
EN

Stack Overflow用户

发布于 2012-10-19 23:16:00

QObject的析构函数已声明为虚拟的。QMainWindow是间接从QObject派生的。我相信QMainWindow的析构在这种情况下不需要虚拟的。删除派生类时,是否在QMainWindow的析构函数中设置了断点?

票数 4
EN

Stack Overflow用户

发布于 2013-02-14 06:46:58

这是Qt中的一个缺陷(未能遵守CBP);最佳实践是在所有派生类中始终使用带入修饰符,尤其是虚拟修饰符,以避免此类问题。

不带上虚声明意味着,作为一个用户,我不仅要查找类,还要查找它的所有父类,以确保我想要重写的方法是否为虚的。开发人员的一点懒惰花费了我大量的时间。

关于“可维护性”的争论是无关紧要的;它使类更难使用(用户将会比维护者多得多……)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12977217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档