Qt对象的生命周期

met*_*dos 10 c++ qt object object-lifetime

Qt对象的生命周期是什么时候?

如:

QTcpSocket *socket=new QTcpSocket();
Run Code Online (Sandbox Code Playgroud)

什么时候套接字会被破坏?我应该用吗?

delete socket;
Run Code Online (Sandbox Code Playgroud)

有什么区别:

QTcpSocket socket;
Run Code Online (Sandbox Code Playgroud)

我无法找到关于此的深刻信息,欢迎任何评论或链接.

Eli*_*sky 12

Qt使用父子关系来管理内存.如果QTcpSocket在创建对象时为对象提供父对象,则父对象将负责清理它.例如,父可以是使用套接字的GUI窗口.一旦窗口死亡(即关闭),插座就会死亡.

您可以在没有父级的情况下执行,但实际上您必须delete手动执行该对象.

我个人建议坚持使用惯用的Qt并使用将所有对象链接到父子树.


Ale*_* C. 10

分配的对象new必须与delete.一起发布.

但是,对于Qt,大多数对象都可以有一个父对象,您可以将其指定为构造函数的参数.删除父项后,将自动删除子对象.