我正在调试一个程序。我需要知道某个类是否被调用了拷贝构造函数。由于我没有定义拷贝构造函数,编译器已经为其生成了默认的拷贝构造函数。我尝试定义它并在其中加入一些cout
语句,但现在我必须手动编写每个成员的拷贝部分。这个类非常庞大,所以我不想这么做。有没有一种方法可以检查拷贝构造函数是否被调用,但避免编写其成员的拷贝?如何调用默认的拷贝构造函数实现?
我正在调试一个程序。我需要知道某个类是否被调用了拷贝构造函数。由于我没有定义拷贝构造函数,编译器已经为其生成了默认的拷贝构造函数。我尝试定义它并在其中加入一些cout
语句,但现在我必须手动编写每个成员的拷贝部分。这个类非常庞大,所以我不想这么做。有没有一种方法可以检查拷贝构造函数是否被调用,但避免编写其成员的拷贝?如何调用默认的拷贝构造函数实现?
您可以使用mixin:
template<class D>
struct traced
{
public:
traced() = default;
traced(traced const&) { std::cout << typeid(D).name() << " copy ctor\n"; }
protected:
~traced() = default;
};
然后你只需要这样从类中继承:
class my_class : public traced<my_class>
{
// usual stuff...
};