检查拷贝构造函数是否被调用

9

我正在调试一个程序。我需要知道某个类是否被调用了拷贝构造函数。由于我没有定义拷贝构造函数,编译器已经为其生成了默认的拷贝构造函数。我尝试定义它并在其中加入一些cout语句,但现在我必须手动编写每个成员的拷贝部分。这个类非常庞大,所以我不想这么做。有没有一种方法可以检查拷贝构造函数是否被调用,但避免编写其成员的拷贝?如何调用默认的拷贝构造函数实现?


1
检查调用堆栈怎么样? - elyashiv
1个回答

10

您可以使用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...
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接