在 c++ 中初始化静态常量数组
Initializing a static const array in c++
假设我有一个类A,其中包含一个静态的const int数组,如下所示。
class A {
static const int _array[];
static int fn( int n );
}
函数 fn 包含非常繁重的计算。现在我想使用函数 fn 初始化我的静态 const 数组。
我通过以下方式做到了这一点:
//.cpp file
int A::fn (int n){
....
return ....
}
const A::_array[] = {
fn(0);
fn(1);
fn(2);
...
fn(9);
}
我的问题是数组初始化是否在编译时?如果我在其他类方法中使用 _array[i],fn 会运行多少次?初始化只有 10 次,还是取决于我使用该_array的次数?
编辑:这是C ++ 03,有没有更有效的方法可以做到这一点?
数组在
运行时初始化。但它将在将控件传递给 main 之前进行初始化。如果它和函数被定义为constexpr
,它可以在编译时初始化 但是这样的函数不能有非常繁重的计算。
该函数的调用次数与初始化列表中的调用次数一样多。
数组的正确定义也是
const int A::_array[] = {
相关文章:
- C++常量数组的编译时间较长
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 使用双指针传递 2D 常量数组
- 检查输入 std::array 指针数据是否等于某个常量数组
- 如何在可执行文件中存储常量数组?
- 常量数组如何在每个元素中只能包含字符,而 char* 数组能够指向每个元素中的字符串?
- LLVM 无法将数组类型强制转换为常量数组
- 如何在C++中的单行中返回常量数组中的值
- C++ 具有常量数组和initializer_list的重载构造函数
- 在可变参数构造函数中初始化常量数组
- 非常量数组
- C/C++ 中的常量数组和静态常量数组有什么区别
- C++全局常量数组:是否保证合并(优化)到一个副本中
- 在常量数组上使用指针遍历
- 具有函数指针常量数组的 C++ 模板化静态类
- 字符常量数组为空,即使已为其赋值 [C++]
- 指向常量数组的指针
- 函数指针的常量数组令人困惑
- 在 c++ 中初始化静态常量数组
- 常量数组类成员初始化