QT——delete详解

1 Qt半自动的内存管理

Qt中已下情况new出的对象可以不用亲自去delete:
(1)QObject及其派生类的对象,如果其parent非0,则其parent析构时会析构该对象,除此之外,有些类的对象可以接收设置一些特别的标记,例如:
1) QWidget及其派生类的对象,可以设置Qt::WA_DeleteOnClose标志位(当close时会析构该对象)
2)QAbstractAnimation派生类的对象,可以设置QAbstractAnimation::DeleteWhenStopped
3)QRunnable::setAutoDelete()
4)MediaSource::setAutoDelete()

2 父子关系

在Qt中,每个QObject内部都有一个list,用来保存所有的children,还有一个指针,保存自己的parent。当它自己析构时,它会将自己从parent列表中删除,并且析构掉所有的children。
建立与解除

Q_INVOKABLE QObject::QObject(QObject)

创建一个QObject对象时,如果指定了父对象,它就会将自己添加到父对象的 children 列表中

QObject::~QObject () [virtual]

当一个QObject对象析构时,它会将自己从父对象的 children 列表中移除(parent非0的话)

void QObject::setParent ( QObject * parent )

通过该函数,将自己从原父对象的children中删除,添加到新parent的children列表中
注:这三个函数都是通过一个内部私有函数来实现的,这就是

QObjectPrivate::setParent_helper(QObject *o)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿着帆布鞋也能走猫步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值