C++11 变量何时隐式初始化为C++;?

C++11 变量何时隐式初始化为C++;?,c++11,initialization,C++11,Initialization,从C++11开始,局部变量何时自动初始化 如果我写 std::vector<int> v; std::vector v; 然后在函数中的某个地方使用v,是否自动初始化?当您创建一个对象时,它是通过构造函数初始化的。每个类都可以有一个显式定义的构造函数,如果没有为类定义构造函数,编译器会自动提供一个默认构造函数 在std::vector情况下,将调用类的default构造函数,因为您没有提供任何参数。Yes,v由std::vector的默认构造函数初始化。这就是为什么它被称为“默认

从C++11开始,局部变量何时自动初始化

如果我写

std::vector<int> v;
std::vector v;

然后在函数中的某个地方使用v,是否自动初始化?

当您创建一个对象时,它是通过构造函数初始化的。每个类都可以有一个显式定义的构造函数,如果没有为类定义构造函数,编译器会自动提供一个默认构造函数


std::vector
情况下,将调用类的default构造函数,因为您没有提供任何参数。

Yes,
v
std::vector
的默认构造函数初始化。这就是为什么它被称为“默认”。这适用于像ints这样的原语吗?是的。但是,它们可能具有随机值。例如,
inti
int
创建并分配内存。在这种默认初始化时,该变量中保存的特定值取决于编译器。不完整类型(如类)与原始类型(如
int
)之间的区别在于,可以使类的默认构造函数将变量初始化为特定值,即“正确”初始化。但是对于基元类型,它们通过简单地定义它们而持有的值不是固定的。因此,这不被视为“初始化”正确。但它可以像所有其他变量一样在定义后使用。