【发布时间】:2019-09-26 20:58:23
【问题描述】:
准系统示例:
Object * o = new Object(); //let's call this one object A on heap
o->deleteLater();
o = new Object(); //and let's call this one object B on heap
当我们进入事件循环时,deleteLater() 是要删除 A 还是 B?我想我的问题是,deleteLater() 是在调用点复制指针,还是在进入事件循环时删除指针持有的任何指针?
如果后者为真,我们如何 deleteLater() 需要重新初始化的指针?
【问题讨论】:
-
这很容易测试...从
Object的析构函数中打印一条带有对象地址的消息,并在构造时将其与A和B的地址进行比较(或向对象添加标识符并打印,等等...) -
好的,我试过了,显然原来的被删除了。所以我猜它是一个指向对象的临时指针?
-
是的 - 它存储要删除的对象的地址。 Qt 不在乎 你 给它起什么名字(即你在调用 deleteLater 之后用你的指针做什么)。