比方说,我写了一个类Foo
与构造函数Foo(int)
。 我有这段代码:C++:类/结构体是否在编译时初始化?
Foo a(i), b = a + Foo(2);
如果我调用的代码构造以恒定的,例如Foo(2)
,编译器是否运行一次并将结果存储为运行时,还是在运行时执行?无论结构/类是否仅包含POD数据类型,它是一样的吗?
假设它在运行时执行(我认为是这种情况),有没有办法使它在编译时运行,或者具有与运行时相同的效果?
编辑:恐怕我没有说清楚。我指的是代码的Foo(2)
部分,它是完全不可变的。另外,我无法使用C++ 11(我正在使用GCC 4.1并且无法升级),所以constexpr
虽然有效,但不适合我。
这是在全球范围或功能? –
查看'constexpr' –
我正在考虑函数内的例子。我担心不得不多次评估'Foo(2)'。 –