如何知道我的对象在C ++中是否还活着?

时间:2011-10-09 18:57:23

标签: c++

有没有办法知道我的对象是活着的,除了在类中声明一个静态私有成员并在构造函数中递增它,在析构函数中递减它。提前致谢。

3 个答案:

答案 0 :(得分:1)

您也可以使用shared_ptr / weak_ptr以非侵入方式使用STL对您的类进行操作。

stl::shared_ptr<YourClass> p = stl::make_shared(...); // holds a strong reference to your type
stl::weak_ptr<YourClass> wp(p);  

cout << wp.use_count(); // "1"

p.reset();

cout << wp.use_count(); // "0"

答案 1 :(得分:0)

你的意思是要知道你是否至少有一个实例化的实例?静态计数器几乎是最好的方法。这就是 I 无论如何都会这样做的。 :)

答案 2 :(得分:-1)

如果有问题的代码存在于非静态方法中,那么根据定义,您的对象是“活着的” - 只要您没有做一些非正统的事情,比如从方法内部删除它。

如果你 这样做(除非你真的知道你在做什么,否则不建议这样做),然后确保你NULL之后立即指出指针并始终确保将thisNULL进行比较,以检查您的对象是否“活着”。