【发布时间】:2011-12-04 12:35:51
【问题描述】:
例如有一个函数在做某事。我应该如何在函数中声明和定义一个数组,我只想分配/初始化一次?
void someclass::somefunction(/*parameters here*/)
{
static const my_array[4] = {1,2,3,4}; // #1
/*or just*/
const my_array[4] = {1,2,3,4}; // #2
}
据我所知,在案例#1 中,“my_array”将在数据段中分配,并在“somefunction”第一次调用时初始化一次。但是我的一个同事做了一个假设,案例#2的工作方式相同,不需要写“静态”关键字。
所以我想问一下,标准是否对案例 #1 和 #2 有所说明,如果有,具体是什么?我应该如何定义这种类型的数组以确保它只会被分配/初始化一次?
谢谢。
【问题讨论】:
-
当我看到
static const时,我认为“这是真的不变的,对于整个程序,它只是限定在需要它的地方,这样它就不会泄漏” ,但是当我看到没有static的const时,我认为“这在函数的生命周期内是不变的”。他们传达了不同的意图(具体而言,static const传达的意图与我在这种情况下从您的代码逻辑进行逆向工程的意图相同,这将建立我对您的代码可靠地传达事物的信任,从而使阅读您的代码更顺畅,减少精神压力我在未来。const会做相反的事情。)
标签: c++ arrays static constants