请看下面的代码:

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/

10-13 21:27