內建型別有建構子嗎?
當臨時 int 值初始化為 0 時,是否是因為 int() 呼叫預設建構子?這是一個常見的誤解,因為內建型別沒有建構子。
值初始化與預設建構子
值初始化是一個相對較新的概念,它初始化一個具有適合其類型的值的臨時物件。對於內建類型,整數值為 0。
TC PL 的宣告
TC PL 第 10.4.2 節規定內建型別也有預設值建構子。然而,這種說法在 C 98 和 C 03 的背景下可以說是不正確的。
Bjarne Stroustrup 的澄清
當與個人聯繫時,Bjarne Stroustrup 澄清說他認為內置-在概念意義上,類型具有構造函數,儘管它們缺乏實際構造函數,儘管它們缺乏實際構造函數的構造函數呼叫。這種概念化是基於它們類似於建構函數的行為,例如值的初始化。
結論
從技術上講,內建類型沒有建構子。但是,用於初始化它們的語法(例如 int{5}、int{})與建構子的語法相同。因此,出於實際目的,將內建類型視為具有在值初始化期間適當初始化其值的預設構造函數是合理的。
以上是C 中的內建型別有建構函式嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!