我有這樣的:子類和使用的基類初始化器
class foo {
public:
int a;
int b;
int c;
};
這很好,但我想添加一些運算符重載,而無需修改類Foo:
class bar: public foo {
operator==(const bar &x) const {
return a == x.a;
}
}
精細,到目前爲止,但現在我需要用我從另一個類獲得的對象數組來初始化條。沒問題,我可以複製所有foo的變量到在一個專用的構造吧:
bar::bar(foo &x) {
a = foo.a;
/* etc */
}
但這似乎亂了,如果類Foo在被更新,那我也太更新吧。受歡迎得多,如果巴可自動初始化本身(它永遠不會包含它自己的數據成員)
'foo',如問題中給出的,已經有一個默認的拷貝構造函數。你不需要添加任何東西,只需調用它。 – 2011-06-07 08:37:58
我再次閱讀它,我沒有看到它說Foo有一個拷貝構造函數。 在他的例子中,我印象中他打印了Foo的所有相關類定義。 – NotJarvis 2011-06-07 08:44:10
如果這個類看起來像這個問題,編譯器會爲它生成一個默認的拷貝構造函數,做所有元素的成員拷貝。 – 2011-06-07 08:46:19