私はこれを持っている:罰金ですが、私は、クラスFOOを修正せずに過負荷をいくつかの演算子を追加したいサブクラスと使用ベースクラス初期化子
class foo {
public:
int a;
int b;
int c;
};
:
class bar: public foo {
operator==(const bar &x) const {
return a == x.a;
}
}
ファイン今のところ、今私は別のクラスから取得するオブジェクトの配列でバーを初期化する必要があります。
bar::bar(foo &x) {
a = foo.a;
/* etc */
}
をしかし、これは厄介なようで、クラスfooの場合は更新される上で、その後、私はあまりにもバーを更新する必要があります:いいえ問題は、私だけのfoo変数の全てが終わっ専用のコンストラクタでバーにコピーすることはできません。多くの望ましいバーは自動的に初期化する(それは、独自のデータメンバーが含まれていることは決してないだろう)簡単
'foo'は、質問にあるように、既定のコピーコンストラクタを既に持っています。あなたは何も追加する必要はありません、それを呼び出すだけです。 –
私はもう一度それを読んで、Fooにはコピーコンストラクタが既にあるとは言いません。 私は彼の例でFooの関連するクラス定義全体を印刷したという印象を受けました。 – NotJarvis
クラスが質問のように見える場合、コンパイラはすべての要素のメンバーワイズコピーを行い、そのためのデフォルトのコピーコンストラクタを生成します。 –