C 中類別初始化器中常數數組的初始化
在C 中,將數組宣告為類別的常數成員時,可能具有挑戰性由於const 限定符,在類別構造函數中初始化它們。本文探討如何在 C 11 之前和之後的環境中克服這項挑戰。
Pre-C 11:
在 C 11 之前,初始化 const使用傳統語法無法直接實作類別初始值設定項中的陣列。但是,有一個解決方法:
<code class="cpp">class a { const int *b; int b_size; // Constructor a(const int *b_array, int b_sz) : b(b_array), b_size(b_sz) {} }; int main() { int b_array[] {2, 3}; a a(b_array, sizeof(b_array) / sizeof(int)); // Proceed with using class 'a' }</code>
在這種方法中,不是將數組聲明為直接成員,而是將其聲明為具有相應大小成員的指標。然後使用構造函數來分配和初始化指標。
Post-C 11:
隨著C 11 的引入,類初始化器中const 陣列的初始化變得更加簡單:
<code class="cpp">struct a { const int b[2]; // Constructor a() : b{2, 3} {} };</code>
在此語法中,緊接在類別成員宣告之後的花括號{} 允許在建構函式中直接初始化const 陣列。
C 11 中的此變更簡化了在類別初始化器中初始化 const 陣列的過程,並提供了一種更簡潔、優雅的方式來定義此類。
以上是在 C 11 之前和之後,如何在 C 類初始值設定項中初始化常數數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!