什么时候qt类作为智能指针

时间:2015-02-17 05:28:16

标签: c++ qt

例如:

QFile* file = new QFile...

如果没有delete file内存泄漏?我问,因为我是Qt的新手并且正在查看我发现的一些代码,所以我想知道Qt课程是否合理?

2 个答案:

答案 0 :(得分:2)

使用QFile,通常没有理由让它变得动态,但是 - > - >删除应该在这里,否则它会泄漏。

在Qt中,强制性规则只有一个例外“对于每个新的应该删除”。

如果您正在创建父母这样的小部件:

QWidget* w = new QWidget();
QWidget* w2 = new QWidget(w);

一旦你删除w - 所有它的孩子(在我们的例子中为w2)也将被删除。这缩短了代码,但这只是一个例外。其余的东西 - 应该删除。

编辑:当然,你可以使用QScopedPointer,或者通常使用std :: unique_ptr。

答案 1 :(得分:1)

规则很简单。如果QObjectparent,则parent会将其删除。如果没有,你应该自己删除它。