物件可以傳遞給它們自己的建構子嗎?
問題:
C 內類的建構函數,是否可以接受將物件作為參數傳遞給
答案:
令人驚訝的是,C 標準允許將物件傳遞到自己的建構函式中,儘管這看起來不合常規。缺陷報告 363 對此進行了解釋,該報告指出未初始化的物件可用於綁定引用並取得位址。
說明:
C 14 的第3.8 節標準闡明,在物件的生命週期開始或結束之前,可以使用引用該物件的任何泛左值,但只能用於有限的目的。這包括綁定引用和獲取地址,它們不依賴物件的值。
實際上,在建構函式中使用未初始化的物件可能會導致警告,正如 Clang 關於「未初始化」變數的警告所證明的那樣。但是,這些警告並不表示未定義的行為,因為沒有產生不確定的值。
確實導致未定義行為的一個例子是透過賦值進行自初始化,例如「int x = x」。
結論:
雖然將物件傳遞給它們自己的構造函數可能看起來不尋常,但它是有效的在C 標準下進行實踐,允許在建置過程中與未初始化的物件進行有限的互動。
以上是你能在 C 中將一個物件傳遞給它自己的建構子嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!