0

タイトルが示すように、派生クラスのコピー コンストラクターがある場合、基本クラスのメンバーもコピーする必要がありますが、プライベート メンバーにはアクセスできません。どうすればこれを達成できますか?

4

1 に答える 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 に答える