首頁 > 後端開發 > C++ > 你能在 C 中將一個物件傳遞給它自己的建構子嗎?

你能在 C 中將一個物件傳遞給它自己的建構子嗎?

Linda Hamilton
發布: 2024-11-11 00:36:02
原創
621 人瀏覽過

Can You Pass an Object to Its Own Constructor in C  ?

物件可以傳遞給它們自己的建構子嗎?

問題:

C 內類的建構函數,是否可以接受將物件作為參數傳遞給

答案:

令人驚訝的是,C 標準允許將物件傳遞到自己的建構函式中,儘管這看起來不合常規。缺陷報告 363 對此進行了解釋,該報告指出未初始化的物件可用於綁定引用並取得位址。

說明:

C 14 的第3.8 節標準闡明,在物件的生命週期開始或結束之前,可以使用引用該物件的任何泛左值,但只能用於有限的目的。這包括綁定引用和獲取地址,它們不依賴物件的值。

實際上,在建構函式中使用未初始化的物件可能會導致警告,正如 Clang 關於「未初始化」變數的警告所證明的那樣。但是,這些警告並不表示未定義的行為,因為沒有產生不確定的值。

確實導致未定義行為的一個例子是透過賦值進行自初始化,例如「int x = x」。

結論:

雖然將物件傳遞給它們自己的構造函數可能看起來不尋常,但它是有效的在C 標準下進行實踐,允許在建置過程中與未初始化的物件進行有限的互動。

以上是你能在 C 中將一個物件傳遞給它自己的建構子嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板