我知道了,如果你声明例如全球范围内的一个int,矢量和原始类型初始化
int x; //默认为0;
和在局部范围内,
void f() {
int x; //undefined
}
然而,如果我们使用一个矢量在全局或局部范围:
矢量<INT> V(3); //使用int的默认构造函数将v初始化为{0,0,0}。
我们可以通过做这个默认的initialise INT像载体的元素在局部范围内:
INT X = INT(); //默认为0
我想如果我们使用int的默认构造函数,它将被分配到堆中。
- 为什么不能在T x这样的本地范围内初始化一个原始类型?或
- 在本地范围内,为什么向量(不知道其他容器)使用元素的默认构造函数,而不是像int声明一样使它们不初始化?
- 当前方法对这两种类型有什么好处?为什么他们以不同的方式初始化?这是关于表现吗?
1)因为那是语言如何指定它。 2)因为这是C +标准如何说'std :: vector'应该工作。 – juanchopanza 2014-10-03 08:16:29