2
我只是應該習慣基本的複製構造函數。沒有匹配構造函數用於初始化
我假設我正確放置了拷貝構造函數。
但是,當我嘗試編譯,我不斷收到錯誤「無匹配的構造函數B的初始化」
我有點困惑。
class A {
int valuea;
public:
A(const A&); // copy constructor
int getValuea() const { return valuea; }
void setValuea(int x) { valuea = x; }
};
class B : public A {
int valueb;
public:
B(int valueb);
B(const B&); // copy constructor
int getValueb() const { return valueb; }
void setValueb(int x) { valueb = x; }
};
int main() {
B b1;
b1.setValuea(5);
b1.setValueb(10);
B b2(b1);
cout << "b2.valuea=" << b2.getValuea() << "b2.valueb=" << b2.getValueb() << endl;
return 0;
}
對於A或B,沒有默認構造函數 - 只要聲明構造函數 - 編譯器將不會生成默認構造函數。 –
如果給'valueb'參數一個默認值,'B(int)'構造函數可以作爲'B'的默認構造函數,從而允許'B b1;'語句工作。然而,'A'沒有構造函數可以調用'B'構造函數,所以'B'依然不能被構造。 –