다른 생성자의 초기화 목록에서 생성자를 호출하는 것에 대한 질문이 있습니다. 예를 들어 다음과 같은 코드를 볼 때 : 라인 387에 전화 클래스 Parent
의 생성자생성자 부모 생성자의 초기화 목록에서 호출 됨 자식
Library::Child::Child
380 (
381 const word& controlName,
382 const argList& args,
383 const word& systemName,
384 const word& constantName
385 )
386 :
387 Parent
388 (
389 args.rootPath(),
390 args.caseName(),
391 systemName,
392 constantName
394 )
395 {}
:
30 Library::Parent::Parent
31 (
32 const fileName& rootPath,
33 const fileName& caseName,
34 const word& systemName,
35 const word& constantName
36)
37 :
38 processorCase_(caseName.find("processor") != string::npos), //private member
39 rootPath_(rootPath), //private member
40 case_(caseName), //private member
41 system_(systemName), //private member
42 constant_(constantName) //private member
43 {}
건설의 주요 목적은 유형/클래스 Library::Child::Child
,이다하지만 객체를 생성 할 때 또한 부모 클래스 Parent
의 생성자 Library::Parent::Parent
이 호출되고 클래스 Parent
의 개인 멤버가 정의됩니다. 클래스 Child
은 Parent
클래스의 private 멤버를 상속하지 않으며, Parent
클래스의 생성자를 호출 할 때 객체/변수가 선언되지 않았기 때문에 (라인 387, 첫 번째 코드 스 니펫 참조) 나는 Parent
의 생성자를 호출하는 것이 무엇인지 잘 모릅니다. 더군다나 클래스 Child
에 대한 클래스 Parent
의 개인 멤버와 어떤 클래스가 연결되어 있으며 클래스가 없기 때문에 어떤 객체가 저장되어 있습니까? Parent
객체가 선언 되었습니까? 인터넷에서 정보를 찾으려고했지만 내 질문에 답할 수있는 정보가 없습니다.
인사 streight는
'Library :: Child :: Child'는 기본 클래스'Library :: Parent :: Parent'의 파생 클래스입니다. ?? ('Base'와 'Derived'라는 단어는 사실이 경우이 질문을 상당히 쉽게 따르게 할 것입니다.) – WhozCraig
@WhozCraig : 예, 클래스'Child'는 클래스'Parent'에서 파생되었습니다. 나는 이것이 '부모'로부터 직접 상속되기 때문에 이것은 또한 이해하기 쉽고 정확한 경우라고 생각한다.참고 :'Library :: Child :: Child'는 클래스가 아닌 생성자입니다. 그러나 이것을 알고 계실 것입니다. – Streight