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
ます」。
WoCC
コンストラクターをのコンストラクターで明示的に呼び出す必要があるのはなぜComposite
ですか?