タイトルが示すように、派生クラスのコピー コンストラクターがある場合、基本クラスのメンバーもコピーする必要がありますが、プライベート メンバーにはアクセスできません。どうすればこれを達成できますか?
質問する
648 次
1 に答える
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
。絶対に必要な場合にのみ使用してください。
于 2013-06-27T02:27:39.973 に答える