如标题所示,如果我有 Derived 类的复制构造函数,我也需要复制 Base 类的成员,但是我无权访问私有(private)成员。我如何实现这一点?
最佳答案
您可以通过以下方式实现此目的:
(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) 最不推荐的方法是在 class Base
的主体内创建 friend class Derived;
。仅在绝对必要时才使用它。
关于c++ - 如何将基类的私有(private)成员复制到派生类的复制构造函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17333562/