如何检查对象有效
How to check object is valid
我有我的类对象,如果我在不同的位置上有此对象,当我将此对象删除并初始化为null时,我希望这个对象在所有其他位置都为null。可能吗?
#include "mainwindow.h"
#include <QApplication>
#include "QDebug"
class A {
public:
int x;
int y;
};
class B : public A {
public:
B(int a, int b) {
this->m = a;
this->n = b;
}
int m;
int n;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
B* temp = new B(1, 2);
B* b1 = temp;
B* b2 = temp;
delete temp;
temp = NULL;
qDebug() << b1->x << b2->x; //its print 421312312 -2131231231
return a.exec();
}
带有std,它会像:
auto temp = std::make_shared<B>(1, 2);
std::weak_ptr<B> w1 = temp;
std::weak_ptr<B> w2 = temp;
temp.reset();
auto b1 = w1.lock();
auto b2 = w2.lock();
if (b1 && b2) {
qDebug() << b1->x << b2->x;
}
谢谢@nathanoliver和all。
我正在使用qsharedPointer。
QSharedPointer<B> obj = QSharedPointer<B>(new B(1, 2));
obj.clear();
B* t = obj.data();
if (t)
qDebug() << t->m << t->n;
else {
qDebug() << "NULL";
}
现在T为空。谢谢!
相关文章:
- 在函数内创建的对象的范围 - 如果在函数外部存储和访问引用,它们是否有效?
- C++,在对象内分配多个数据时,堆栈分配是否更有效? 在下面的程序中,类A_Heap的效率会更低吗?
- 在 c++ 中将对象设置为等于同一类的构造函数是否有效?
- 当表示为对象的一维向量时,有效地旋转 NxM 矩阵 (C++)
- 返回一个引用C++中另一个类对象的对象的有效方法
- 在递归函数中更有效地创建对象和对象数组?C++
- 自定义类型转换运算符在转发引用上调用时不起作用(当对象按值传递时有效)
- 有效地分配堆栈对象(由函数的值返回)到堆?
- 如果一个对象是在本地创建的,并在C++中作为异常抛出,那么本地对象如何在其范围之外有效,即在 catch 块中?
- 有没有办法自动初始化 std::shared_ptr 来保存有效对象?
- 如何检查对象有效
- 如何检查指针后面的对象是否有效或已删除?
- 列出 n 个对象的所有 k 排列的有效方法,同时满足特定标准
- 如何使用 stl 容器有效地存储对象?(即根据其字段的值进行搜索)
- 如何有效地初始化大型类的对象
- 与C++共享 Julia 对象的最有效方法是什么?
- 是否有一种有效的方法可以将一系列对象与父/子关系分类
- 什么是将对象相互连接的干净有效的方法
- C++使用 shared_ptr 安全地删除事件对象有效负载
- 在类的构造函数内创建对象有效吗