首頁 >後端開發 >C++ >您可以在 C 中對陣列成員使用建構函式初始值設定項嗎?

您可以在 C 中對陣列成員使用建構函式初始值設定項嗎?

Barbara Streisand
Barbara Streisand原創
2024-11-07 08:33:02190瀏覽

Can You Use Constructor Initializers for Array Members in C  ?

C 中陣列成員的建構函式初始化器

在C 中使用物件陣列時,正確初始化它們可能是一項具有挑戰性的任務。本文探討了對陣列成員使用建構函式初始值設定項的限制和解決方法。

非陣列初始化

在非陣列範例中,結構體Bar 可以初始化其使用建構子初始值設定項的成員foo:

陣列初始化

但是,在陣列範例中,struct Baz 無法使用相同的語法初始化其陣列成員foo :

限制

在C 中,陣列缺乏建構函數支援。因此,在任何物件初始化發生之前,數組成員都會預設初始化。因此,不可能直接使用建構函數初始值設定項來初始化陣列成員。

解決方法

問題中提供的解決方案是採用解決方法。由於像 std::vector 這樣的 STL 構造不可用,因此使用明確 init() 方法建立預設建構函式以進行建構後初始化。這完全避免了對建構函數初始值設定項的需要。

替代解決方案

Barry 的回覆建議了一種更新的方法。如果開發環境支援 C 98 以外的 C 標準,則可以使用更新的語法:

此語法允許使用大括號初始化數組成員,從而無需預設構造函數和明確初始化方法。

以上是您可以在 C 中對陣列成員使用建構函式初始值設定項嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn