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中文网其他相关文章!