제 4 클래스의 생성자를 어떻게 호출해야하는지 궁금합니다. 클래스 A는 기본 클래스이고 클래스 B와 C는이를 상속합니다.C++ 다이아몬드 상속 생성자?
ClassA::ClassA(const string &nam, const string &ide, double bal)
:name(nam), id(ide), balance(bal)
{
}
ClassB::ClassB(const string &nam, const string &ide, double bal)
:ClassA(nam, ide, bal)
{
}
ClassC::ClassC(const string &nam, const string &ide, double bal)
:ClassA(nam, ide, bal)
{
}
지금 내 4 클래스는 클래스 B와 클래스 C 모두가 어떻게 내 클래스 D에 대한 생성자를 호출하기로하고 상속?
여기에 표시되지는 정상 또는 가상 상속을 사용할지 여부를 무엇
ClassD::ClassD(const string &nam, const string& ide, double bal)
:ClassA(nam, ide, bal), ClassB(), ClassC()
{
}
는 * 당신이 얻고; 나는 할 것이다. 당신의'ClassB' 또는'ClassC' 생성자 중 * 어느 쪽이 ** no ** 매개 변수를 취하는 것처럼 보이나요 ?? 그래, 나도 마찬가지야. 그렇다면 왜'ClassB()'와'ClassC() '를 호출할까요? 선언 된 생성자를 사용하십시오. 즉, 링크 된 질문의 모든 내용과 게시 된 답변이 적용되므로 신중하게 읽으십시오. – WhozCraig
Im 어떤 생성자를 호출 할 것인지, 어떤 생성자를 호출하지 않을 것인지에 관해서는 매우 혼란 스럽습니까? ClassA 생성자는 기본 클래스이기 때문에 호출해야한다는 것을 이해합니다.하지만 클래스 B와 C 생성자를 호출하지 않습니다. 그리고 만약 그렇다면, 나는 인수를 공란으로 남겨 두는가? 그래서 나는 Im이 그 오류를 얻는다고 생각한다. * 모든 가상 상속 구문은 내 .h 파일에 포함되어 있습니다. – user3582405