class WithCC { // With copy-constructor
public:
// Explicit default constructor required:
WithCC() {}
WithCC(const WithCC&) {
cout << "WithCC(WithCC&)" << endl;
}
};
class WoCC { // Without copy-constructor
string id;
public:
WoCC(const string& ident = "") : id(ident) {}
void print(const string& msg = "") const {
if(msg.size() != 0) cout << msg << ": ";
cout << id << endl;
}
};
class Composite {
WithCC withcc; // Embedded objects
WoCC wocc;
public:
Composite() : wocc("Composite()") {}
void print(const string& msg = "") const {
wocc.print(msg);
}
};
我正在閱讀思考C++第11章默認的複製構造函數。 對於上面的代碼,作者說:「類WoCC
沒有複製構造函數,但其構造函數將存儲消息在一個內部字符串,可以打印出使用 print()
。此構造函數明確調用Composite’s
構造函數初始值設定項列表」。瞭解默認的構造函數C++
爲什麼WoCC
constrcutor必須在Composite
的構造函數中明確調用?
'WoCC'沒有拷貝構造函數。既然你沒有聲明一個,它會得到一個*隱式聲明的*拷貝構造函數。 – aschepler 2013-02-23 18:27:55