向默认复制构造函数添加功能

时间:2017-03-08 18:52:47

标签: c++ constructor copy-constructor

我有一个问题。假设我有一个A类,我对默认的复制构造函数非常满意。

我可以在不重新编写所有工作的情况下为此默认复制构造函数添加功能吗?

琐碎的例子:

class A 
{
public:
A(int n) : data(n) { };
private:
int data;
};

假设我要打印消息"复制构造函数!"每次调用复制构造函数。对于这个简单的例子,我只想编写自己的拷贝构造函数,它明确地负责浅拷贝,并打印出消息。有没有办法在默认的拷贝构造函数的顶部上添加消息打印(或我想要的任何其他功能),而不是明确地写浅层coyp?

1 个答案:

答案 0 :(得分:1)

  

假设我要打印消息"复制构造函数!"每次调用复制构造函数。对于这个简单的例子,我只想编写自己的拷贝构造函数,它明确地负责浅拷贝,并打印出消息。

是的,您需要明确地提供复制构造函数并将该打印添加到消息中。

class A 
{
    public:
    A(int n) : data(n) { };
    // You need to add tis:
    A(const& A rhs) : data(rhs.data)  {
        std::cout << "Copy constructor!" << '\n';
    }
    private:
    int data;
};
  

有没有办法在默认的拷贝构造函数之上添加消息打印(或者我想要的任何其他功能),而不是明确地写浅层的coyp?

不,没有。