首頁 > 後端開發 > C++ > C 建構函式可以直接在成員初始化列表中初始化陣列嗎?

C 建構函式可以直接在成員初始化列表中初始化陣列嗎?

Susan Sarandon
發布: 2024-11-14 12:59:02
原創
512 人瀏覽過

Can C   Constructors Initialize Arrays Directly in Member Initializer Lists?

在建構子初始值設定項清單中初始化陣列成員

無法使用成員初始值設定項清單在建構子中初始化數組會引發有關基本規則和可能的問題

C 03標準與聚合初始化

C 03 標準禁止在成員初始值設定項清單中對聚合類型(包括陣列)使用直接初始化。直接初始化是指直接使用帶有括號的建構函數,如提供的程式碼片段所示。

Boost::array 作為解決方案

另一種方法是使用封裝陣列的結構體。透過在結構中定義建構函數,您可以在建立物件時初始化數組。這與 Boost::array 函式庫採用的方法類似。

C 11 列表初始化

C 11 引入了列表初始化,它允許直接初始化聚合,包括數組,在成員初始值設定列表中。但是,問題中提到的語法不正確。要使用列表初始化,必須將陣列元素括在大括號內:

class C
{
public:
    C() : arr{1, 2, 3} {}
};
登入後複製

此語法在建構函式中正確初始化 arr 陣列。

以上是C 建構函式可以直接在成員初始化列表中初始化陣列嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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