假设我有一个包含静态const int数组的类A,如下所示。
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,还有更有效的方法吗?
答案 0 :(得分:1)
阵列在运行时初始化。但它会在控件传递给main之前初始化。它可以在编译时初始化,如果它和函数定义为constexpr
但是这样的函数不能进行非常繁重的计算。
该函数将在初始化列表中调用多次。
数组的正确定义是
const int A::_array[] = {