请看下面的代码:
class Node
{
private:
double x, y;
public:
Node (double xx, double yy): x(xx), y(yy){}
};
int main()
{
Node *n1 = new Node(1,1);
Node *n2 = n1;
delete n2;
n2 = NULL;
if (n1 != NULL) //Bad test
{
delete n1; //throw an exception
}
}
有两个指针 n1、n2 指向同一个对象。我想检测是否使用n1指针测试删除了n2。但是这个测试结果异常。
有什么方法可以使用 n1 指针确定对象是否被删除(或未被删除)?
最佳答案
据我所知,处理这种情况的典型方法是使用引用计数的指针,例如COM。在Boost中,有一个shared_ptr模板类可以提供帮助(http://www.boost.org/doc/libs/1_42_0/libs/smart_ptr/shared_ptr.htm)。
关于c++ - 测试,如果对象被删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2758014/