[英]Constructor and destructor calls
如何檢查我的構造函數或析構函數是否被調用?
由於隱式調用,我不知道它們是否實際被調用。
你為什么不在你的ctor / dtor中輸入幾個cout <<“我在這里”或使用調試器並在那里設置斷點?
如果要避免或更好地管理隱式調用,可以將構造函數限定為explicit
。 這將顯示您在編譯時可能缺少的任何隱式調用。
一旦您整理了這種用法,您可以刪除資格或者根據自己的喜好離開。
如果要跟蹤ctor與dtor調用的計數,可以為類中的每個調用添加一個靜態計數器,然后使用互鎖遞增和遞減操作分別計算ctors和dtors。 這應該表明您是否正確匹配它們。 你必須包括copy ctor和你在課堂上實現的任何非默認ctors才能使用它。
您可以為它們設置斷點,看它是否被擊中。 或者您可以輸出一行到控制台:
class MyClass {
MyClass() { std::cout << "In constructor" << std::endl; }
~MyClass() { std::cout << "In destructor" << std::endl; }
};
其中一種可能的方法是為每個構造函數和析構函數添加帶有特殊消息的正確標記的“std :: cout”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.