qt中指针A指向的指针B,delete 指针A后,这个指针B会被自动销毁吗
时间: 2024-03-03 22:44:34 浏览: 91
Qt实现指针式时钟 Qt实现动态时钟
在Qt中,当一个指针A指向另一个指针B时,如果你使用delete操作符删除指针A,指针B不会被自动销毁。这可能导致指针B成为一个悬挂指针,即指向已经被删除的对象的指针。为了避免这种情况,你可以使用Qt库提供的QPointer类来解决指针悬挂问题。QPointer类会在对象被销毁时自动将指针设置为nullptr,从而避免指针悬挂问题的发生。
下面是一个示例代码,演示了在Qt中使用QPointer类的情况:
```cpp
#include <QPointer>
#include <QObject>
int main() {
QObject* obj = new QObject();
QPointer<QObject> ptr(obj);
delete obj;
if (ptr.isNull()) {
// 指针已经被自动设置为nullptr
// 执行一些操作...
} else {
// 指针仍然有效
// 执行一些操作...
}
return 0;
}
```
在上面的示例中,我们创建了一个QObject对象,并使用QPointer类创建了一个指向该对象的指针ptr。然后,我们使用delete操作符删除了该对象。最后,我们使用QPointer的isNull()函数检查指针是否为nullptr,以确定对象是否已被销毁。
阅读全文