0

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

4

1 回答 1

2

您有以下方法来完成此操作:

(1) 创建一个基本拷贝构造函数(not 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。只有在绝对必要时才使用它。

于 2013-06-27T02:27:39.973 回答