我必须从同一类的另一个函数调用一个类的函数。但是问题是在某些情况下当前对象可以被销毁。因此,在这种情况下,调用函数会产生错误。有什么方法可以从类内部检查当前对象是否被销毁?
另一个线程可以先删除当前对象,然后再创建同一类的另一个对象,然后再从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();
}
答案 0 :(得分:3)
是否可以从类内部检查当前对象是否被破坏?
不,没有办法。
我认为“从类内部”的意思是“通过使用对象的状态”。好吧,如果对象被破坏,那么就不会有观察到的状态。任何尝试都会导致不确定的行为。
此外,当对象被销毁时,可能不会调用该对象的成员函数,因此在function2
中进行测试是毫无意义的,因为如果对象已销毁,则调用function2
已经会导致不确定的行为。