C++标准规定(8.5/5):
默认初始化类型为 T 的对象意味着:
默认初始化类型为 T 的对象意味着:
- 如果T是非POD类类型(条款9),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化无效)。
- 如果T是数组类型,则每个元素都会默认初始化。
- 否则,该对象将被零初始化。
struct Int { int i; };
int main()
{
Int a;
}
对象a
是默认初始化的,但显然a.i
不一定等于0。这是否与标准相矛盾,因为Int
是POD且不是数组?
编辑:将class
更改为struct
,以使Int
成为POD。