如果你使用“一个明确的构造函数调用,但不给实参”这样的语法,基础类型会被设置初值0:
例如:
int i1 ;//未定义值。
int i2 = int() ;//初始化为 0 。
int i3{}//初始化为 0 。
这个特性使你可以写出“确保无论任何类型,其值都有一个确凿的类型的默认值”的 template code(模板编码)例如下面的函数中,初始化保证了“ x 如果是基础类型,会被初始化为 0 。”:
template < typename T >
void f()
{
T x=T();
...
}
如果一个 template 强迫设置初始值为 0 ,其值就是所谓的 zero initialized(零初始化),否则就是 default initialized(默认初始化)。



