【发布时间】:2016-06-06 11:11:35
【问题描述】:
在 C 中你可以这样做:
static const int a;
int main(){}
而且看起来还不错。 C99 §6.7.8p10 说:
如果具有静态存储持续时间的对象未初始化 明确地,那么:
——如果它有算术类型,它被初始化为(正数或 无符号)零;
类似地,C++14 §3.6.2p2 说:
具有静态存储持续时间 (3.7.1) 或线程存储的变量 持续时间(3.7.2)应在任何其他之前被零初始化(8.5) 初始化发生。
不同之处在于 C++14 它需要一个初始化器§8.5p7:
如果一个程序调用一个对象的默认初始化 const 限定类型
T,T应该是一个类类型 用户提供的默认构造函数。
所以我问为什么 C++ 中需要初始化程序?如果a 不是const,则不需要初始化程序,那么const 在这里有什么不同会使没有初始化程序不好?
【问题讨论】:
-
C 和 C++ 是不同的语言。
标签: c++ constants static-initialization