首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么官方的Qt示例和教程不使用智能指针?

为什么官方的Qt示例和教程不使用智能指针?
EN

Stack Overflow用户
提问于 2015-12-23 18:21:02
回答 2查看 16K关注 0票数 81

为什么关于Qt库的官方示例和教程从不使用智能指针?我只看到用于创建和销毁小部件的newdelete

我搜索了它的基本原理,但我没有找到它,我自己也看不到它,除非是出于历史原因或向后兼容性:不是每个人都希望程序在小部件构造函数失败时终止,并且通过try/catch块处理它非常丑陋(即使在很少的地方使用)。父窗口小部件可能取得孩子的所有权的事实对我来说也只是部分解释了这一点,因为在某种程度上,您仍然必须为父母使用delete

EN

回答 2

Stack Overflow用户

发布于 2015-12-23 18:24:02

你已经回答了你自己的问题:except if it's for historic reasons/backward compatibility。一个像QT这样庞大的库不能假设每个使用这个库的人都有支持C++11的编译器,newdelete在更早的标准中肯定存在。

但是,如果您确实支持使用智能指针,我鼓励您使用智能指针而不是原始指针。

票数 12
EN

Stack Overflow用户

发布于 2015-12-23 18:28:19

除了@Jamey所说的:

如果您巧妙地设计它,您可能永远不需要在小部件上使用delete。假设您有一个主窗口,您正在为它创建一个自动对象,并在事件循环中运行该窗口。现在,可以将此小部件中的所有项添加为它的子项。由于您是直接/间接地将它们作为子级添加到此MainWindow中,因此当您关闭此主窗口时,一切都将自动进行处理。您只需确保您创建的所有动态对象/小部件都是MainWindow的子项/孙项。因此,不需要显式删除..

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

https://stackoverflow.com/questions/34433435

复制
相关文章

相似问题

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