繁体   English   中英

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

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

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

您也可以使用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进行比较以检查您的对象是否“有效” 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM