9.2.3 静态持续变量(2)

2013-10-07 15:42:09 · 作者: · 浏览: 86

9.2.3  静态持续变量(2)

那么初始化形式由什么因素决定呢?首先,所有静态变量都被零初始化,而不管程序员是否显式地初始化了它。接下来,如果使用常量表达式初始化了变量,且编译器仅根据文件内容(包括被包含的头文件)就可计算表达式,编译器将执行常量表达式初始化。必要时,编译器将执行简单计算。如果没有足够的信息,变量将被动态初始化。请看下面的代码:

 

首先,x、y、z和pi被零初始化。然后,编译器计算常量表达式,并将y和z分别初始化为5和169。但要初始化pi,必须调用函数atan(),这需要等到该函数被链接且程序执行时。

常量表达式并非只能是使用字面常量的算术表达式。例如,它还可使用sizeof运算符:

 
C++(www.cppentry.com)11新增了关键字constexpr,这增加了创建常量表达式的方式。但本书不会更详细地介绍C++(www.cppentry.com)11新增的这项新功能。