- 在C++中我们new了一个对象后,返回的是这个对象的指针,如QObject* pObject = new QObject();
- 在使用完对象后,我们用delete删除这个对象,如delete pObject;
- 如果我们没有在delete后将pObject赋值为nullptr,其实指针pObject是会指向之前的那个地址的,只是这个地址处的对象已经被析构了。
- 所以如果我们用if(pObject)这样的条件来判断对象是否已被析构,其实是会有问题的。如果想要这样判断,我们可以在delete后将该指针赋值为nullptr。
//下面这样是错误的!!
QObject* pObject = new QObject();
//使用pObject
delete pObject;
//如果对象被析构则进行如下逻辑。错!!!!
if(pObject)
//下面这样是正确的!!
QObject* pObject = new QObject();
//使用pObject
delete pObject;
pObject = nullptr;
//如果对象被析构则进行如下逻辑。错!!!!
if(pObject)