簡體   English   中英

在類構造函數中調用包含類的構造函數

[英]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.
}

兩個問題:

  1. 確實是調用的類fileName的構造函數嗎?
  2. 如果像這樣被調用, fileName的構造函數不是靜態的嗎?

問候聲

  1. 是的-這是fileName類的真正構造函數-沒有返回值,並且方法的名稱與類的名稱相同。

  2. 這不是對構造函數的調用,而是對構造函數的定義(我想::會讓您感到困惑):

     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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM