如标题所示,如果我有Derived类的复制构造函数,我也需要复制Base类的成员,但是我无法访问私有成员。我如何实现这一目标?
答案 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
。只有在绝对必要时才使用它。