[英]Calling a constructor of included class within class constructor
在類argList
構造函數是指令
args_[0] = fileName(argv[0]);
當搜索方法fileName(...)
,結果表明它應該是fileName
類的構造函數:
inline Foam::fileName::fileName(const char* str) //Construct as copy of character array.
: string(str) //Construct as copy of character array.
{
stripInvalid(); //Strip invalid characters from the given string.
}
兩個問題:
fileName
的構造函數嗎? fileName
的構造函數不是靜態的嗎? 問候聲
是的-這是fileName
類的真正構造函數-沒有返回值,並且方法的名稱與類的名稱相同。
這不是對構造函數的調用,而是對構造函數的定義(我想::
會讓您感到困惑):
inline Foam::fileName::fileName(const char* str) //Construct as copy of character array.
這是對構造函數的調用:
args_[0] = fileName(argv[0]);
C ++中沒有靜態構造函數。
'1。 確實是調用的類fileName的構造函數嗎?
是。 之所以調用構造函數,是因為為args_ [0]分配了fileName類的新實例。
'2。 如果像這樣被調用,fileName的構造函數不是靜態的嗎?
否。構造函數不能為靜態。 這是構造對象的正確方法之一。
確實是調用的類
fileName
的構造函數嗎?
間接地,是的。 對於類T
,表達式T(args)
創建一個臨時對象,並通過為參數調用合適的構造函數對其進行初始化。
在這種情況下,此構造函數與參數類型匹配,因此使用了該構造函數。
如果像這樣調用
fileName
,構造器不是靜態的嗎?
不,構造函數不能聲明為靜態。 它們始終可以用於初始化命名變量或類似此類的臨時變量,而無需特殊聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.