正如标题所示,如果我有 Derived 类的复制构造函数,我也需要复制 Base 类的成员,但是我无权访问私有成员。我如何实现这一目标?
问问题
648 次
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 回答