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++
Composite
의 생성자에서 WoCC
constrcutor를 명시 적으로 호출해야하는 이유는 무엇입니까?
'WoCC'에는 복사 생성자가 있습니다. 선언하지 않았으므로 암시 적으로 선언 된 * 복사 생성자를 가져옵니다. – aschepler