Qt 对象的生命周期是多少?

例如:

QTcpSocket *socket=new QTcpSocket();

套接字什么时候会被销毁?我应该使用

delete socket;

有什么区别吗:

QTcpSocket socket;

我找不到有关此的深入信息,欢迎任何评论或链接。

有帮助吗?

解决方案

qt使用父子关系来管理内存。如果您在创建父级时向QTcpSocket对象提供,则父级将保理清理。父级可以是例如使用套接字的GUI窗口。一旦窗口模具(即关闭)插座模具。

您可以在没有父级的情况下进行,但事实上,您必须手动生成对象。

p>本身我建议坚持惯用Qt,并使用将所有对象链接到父儿童树中。

其他提示

分配的对象 new 必须与释放 delete.

然而,对于 Qt,大多数对象都可以有一个父对象,您可以将其指定为构造函数的参数。当父对象被删除时,子对象也会自动删除。

如果您不想出于某种原因传递父级(因为没有qobject拥有套接字对象的qobject,则可以使用qsharedpointer来管理生命周期。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top