qt 指针 自动删除?

qt中new一个指针,需要像c++那样,自己手动删除?还是像java那样,系统会自动删除... qt中new 一个指针,需要像c++那样,自己手动删除?还是像java那样,系统会自动删除 展开
 我来答
百度网友f14e9e8ea
推荐于2017-09-29 · 超过22用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:60万
展开全部
qt下,在删除Q类(QObject继承类)指针或Q类对象在析构的时候,同时会删除或析构他的子对象,这里的父子关系不是指继承关系,而是指构造时在构造函数的参数中指定的父类,或通过setParent()函数指定的父类。

QObject中的d_ptr指针中含有丰富的信息,其中包括父对象指针,及子对象,子子对象,子子子对象..构成的链表。Q类在构造的时候或setParent()函数中够成的父子关系都被保存在这些信息中,在删除Q类对象指针或类对象在析构的时候,会根据这些信息,同时删除或析构他的子对象,子子对象,直到删除到链表结尾。

例1:
删除parent时,child1和child2也会被删除。

QObject *parent = new QObject ;
QObject *child1 = new QObject(parent) ;//child1是parent的子对象
QObject *child2 = new QObject(child1) ;//child2是child2的子对象,是parent的子子对象。
delete parent;

例2:
Parent是继承于QObject的类,child是Parent的成员变量,Parent在析构的时候就不需要再删除指针child。

Parent::Parent()
{
child = new QObject(this); //child是Parent的子对象
}
Parent::~Parent()
{
}

参考资料: http://blog.csdn.net/yaoguangle/archive/2009/12/04/4941544.aspx

zhaodongya1982
2010-12-20
知道答主
回答量:14
采纳率:0%
帮助的人:5万
展开全部
qt需要手动删除.qt本身就是C++封装的类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-12-20
展开全部
不是继承至QObject的对象需要手动删除
继承至QObject的对象,在父对象被删除时,会自动被删除
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wulinwulin76
2010-12-20 · TA获得超过308个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:346万
展开全部
可以参考百度文库的这篇文章:
http://wenku.baidu.com/view/be13dafff705cc17552709c7.html
比较详细地介绍了Qt的动态内存管理问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式