如何从已删除的对象中调用方法?

时间:2019-03-15 11:33:41

标签: c++ delete-operator

每个人。我是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之外声明。

希望很清楚。

谢谢

0 个答案:

没有答案