如何将基类的私有成员复制到派生类的复制构造函数中

时间:2013-06-27 02:24:33

标签: c++ copy-constructor

如标题所示,如果我有Derived类的复制构造函数,我也需要复制Base类的成员,但是我无法访问私有成员。我如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

您有以下方法可以实现此目的:

(1)创建一个基本拷贝构造函数(不是private)并在派生拷贝构造函数中调用它。
例如:

class Base {
  private: int i;
  public: Base(const Base& copy) : i(copy.i) {}
};

class Derived : public Base {
  Derived(const Derived& copy) : Base(copy) {}
};

(2)将基本成员复制为protected;但这是不太可取的方式,因为你正在进行分配而不是初始化。

(3)最不可取的方法是在friend class Derived;的主体内部class Base。只有在绝对必要时才使用它。