我有一個關於在另一個構造函數的初始化列表中調用構造函數的問題。例如在代碼看起來像這樣當:構造函數在初始化調用構造函數的列表中調用子代碼
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