每个人。我是C ++编程的新手,我无法完全了解对象删除的工作原理。我四处寻找答案,但是找不到以下内容的准确解释。
这里的问题是:如果我使用 new 动态实例化一个对象,我删除并将其分配给指针 NULL ,为什么可以呢?还从刚刚删除的对象中调用方法吗?
在控制台中,我从qDebug()获得以下消息:
新对象的地址:0x11a5890
删除后的对象地址并将其设置为NULL:0x0
对象地址:0x0 cMyClass :: aMethod()
最后两行由aMethod()打印。以下是代码段:
#include "MainForm.h"
#include <QApplication>
#include "cMyClass.h"
cMyClass* pMyClass = NULL;
int main(int argc, char *argv[])
{
pMyClass = new cMyClass();
qDebug() << "Address of new object:" << pMyClass;
delete pMyClass;
pMyClass = NULL;
qDebug() << "Address of object after deletion and setting it to NULL:" << pMyClass;
pMyClass->aMethod();
QApplication a(argc, argv);
MainForm w;
w.show();
return a.exec();
}
cMyClass的方法在哪里
void cMyClass::aMethod(){
qDebug() << "Object address:" << this;
qDebug() << "cMyClass::aMethod()";
}
其他信息:我不能使用智能指针,并且pNewClass必须是全局的并且在main之外声明。
希望很清楚。
谢谢