如何检查我的构造函数或析构函数是否被调用过?
由于隐式调用,我不知道它们是否实际被调用。
答案 0 :(得分:9)
答案 1 :(得分:6)
你为什么不加入几个cout<<在我的ctor / dtor中“我在这里”或使用调试器并在那里设置断点?
答案 2 :(得分:1)
如果您想避免或更好地管理隐式调用,您可以将构造函数限定为explicit
。这将显示您在编译时可能缺少的任何隐式调用。
一旦您整理了这种用法,您可以删除资格或者根据自己的喜好离开。
如果要跟踪ctor与dtor调用的计数,可以为类中的每个调用添加一个静态计数器,然后使用互锁递增和递减操作分别计算ctors和dtors。这应该表明您是否正确匹配它们。你必须包括copy ctor和你在课堂上实现的任何非默认ctors才能工作。
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以为它们设置断点并查看它是否被击中。或者您可以输出一行到控制台:
class MyClass {
MyClass() { std::cout << "In constructor" << std::endl; }
~MyClass() { std::cout << "In destructor" << std::endl; }
};
答案 5 :(得分:0)
其中一种可能的方法是为每个构造函数和析构函数添加带有特殊消息的正确标记的“std :: cout”。