首頁 > 後端開發 > C++ > 如何初始化成員初始化清單中的陣列成員?

如何初始化成員初始化清單中的陣列成員?

Barbara Streisand
發布: 2024-11-29 02:07:08
原創
520 人瀏覽過

How to Initialize an Array Member in a Member Initializer List?

如何在成員初始化器清單中初始化陣列成員

簡介

初始化成員值設定項目清單中的陣列成員看起來像是一項簡單的任務,但在實踐中可能很困難。本文將探討不同的方法並回答與此主題相關的常見問題。

問題與程式碼

以下程式碼片段嘗試在建構函式的初始值設定項中初始化陣列成員list:

class C {
public:
    C() : arr({1,2,3}) //doesn't compile
{}
private:
    int arr[3];
};
登入後複製

但是,程式碼無法編譯。原因是陣列只能使用賦值運算子=來初始化,如:

int arr[3] = {1,3,4};
登入後複製

  • 使用Struct:

一種解決方案是使用結構體來封裝數組,允許它在構造函數中初始化。這本質上就是 Boost.Array 函式庫的作用。

  • 使用列表初始化:

C 11 引入了列表初始化,可用於初始化成員初始值設定項列表中的數組。以下程式碼可以運作:

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

C 03

C 03 標準沒有專門解決構造函數初始值設定項中聚合(包括陣列)的初始化。原始程式碼的無效性是直接初始化規則的結果,該規則禁止對陣列使用初始化器清單。

C 11

C 11 的列表初始化語法簡化了成員初始化列表中數組的初始化。但是,使用正確的語法很重要,如上所示。

以上是如何初始化成員初始化清單中的陣列成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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