检查当前对象是否在C ++中的同一类内被销毁

时间:2020-05-31 15:36:27

标签: c++ class object

我必须从同一类的另一个函数调用一个类的函数。但是问题是在某些情况下当前对象可以被销毁。因此,在这种情况下,调用函数会产生错误。有什么方法可以从类内部检查当前对象是否被销毁?

另一个线程可以先删除当前对象,然后再创建同一类的另一个对象,然后再从function1内部调用function2。在这种情况下,调用function1是有效的,对吧?

例如,

#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>

using namespace std;

class example {

public:
    example(){}
    ~example() {}

    void function1() {
        // some code here
        return;
    }

    void function2() {
        //some code here
        // I want to check whether the current object is destroyed or not before calling function1() 
        function1();
    }
private:
    bool check;

};

int main()
{   
    example *exp=new example();
    exp->function2();
}

1 个答案:

答案 0 :(得分:3)

是否可以从类内部检查当前对象是否被破坏?

不,没有办法。

我认为“从类内部”的意思是“通过使用对象的状态”。好吧,如果对象被破坏,那么就不会有观察到的状态。任何尝试都会导致不确定的行为。

此外,当对象被销毁时,可能不会调用该对象的成员函数,因此在function2中进行测试是毫无意义的,因为如果对象已销毁,则调用function2已经会导致不确定的行为。

相关问题