我有一个关于在另一个构造函数的初始化列表中调用构造函数的问题。例如在代码看起来像这样当:构造函数在初始化调用构造函数的列表中调用子代码
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 {}
与Parent
类的构造称为线387:
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
类的私有成员,而且在调用Parent
类的构造方法时,没有声明对象/变量(请参见第387行,第一个代码片段),我不知道调用Parent
的构造方法有什么好处?此外,类Parent
到类Child
对象的私有成员在什么关系以及它们存储在哪里,因为没有对象声明的类Parent
? 我试图在网上找到关于它的信息,但找不到任何回答我的问题的东西。
问候 streight
'Library :: Child :: Child'是基类'Library :: Parent :: Parent'的派生类? (如果事实上是这样的话,“Base”和“Derived”这两个词就会使这个问题更容易遵循)。 – WhozCraig
@WhozCraig:是的,“Child”类是从“Parent”类派生的。我认为这也很容易理解,并且在这种情况下是准确的,因为'Child'直接从'Parent'继承。注意:'Library :: Child :: Child'是构造函数,而不是类,但我相信你知道这一点。 – Streight