簡體   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