如何知道我的对象在c++中是否活着

How to know if my object is alive in C++?

本文关键字:是否 活着 c++ 何知道 我的 对象      更新时间:2023-10-16

除了在类中声明静态私有成员并在构造函数中自增,在析构函数中自减之外,还有什么方法可以知道我的对象是活的吗?提前感谢。

您还可以使用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"

你的意思是知道你是否至少有一个实例化的类?静态计数器几乎是最好的方法。这就是怎么做的。:)

如果所讨论的代码存在于非静态方法中,那么根据定义,您的对象是"活的"——只要您没有做一些非常规的事情,例如从方法中删除它。

如果你这样做(这是不推荐的,除非你真的知道你在做什么),然后确保你的NULL之后立即出指针,并始终确保比较thisNULL来检查你的对象是否"活着"