【发布时间】:2014-02-25 15:41:04
【问题描述】:
假设我有一个类 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,有没有更有效的方法来做到这一点?
【问题讨论】:
-
C++11 还是 C++03 ?是
fn可以是constexpr吗? -
如果
fn必须执行用户交互、网络IO和随机数生成,怎么可能在编译时? -
cpp中不应该是
const int A::_array[] = ...吗? -
是的,它是 A::_array[]
标签: c++ constants static-members