未初始化的向量中的元素值是多少?

der*_*dji 0 c++ vector default-value

如果我创建一个像vector<myClass> v(10); 每个元素的默认值的向量?


还有,如果它是vector<myUnion> v(10)什么?

AnT*_*AnT 15

std::vector<>向量声明为时使用的构造函数

vector<myClass> v(10);
Run Code Online (Sandbox Code Playgroud)

实际上有多个参数.它有三个参数:初始大小(您指定为10),新元素的初始值和分配器值.

explicit vector(size_type n, const T& value = T(),
                const Allocator& = Allocator());
Run Code Online (Sandbox Code Playgroud)

第二个和第三个参数具有默认参数,这就是您可以在声明中省略它们的原因.

新元素的默认参数值是默认构造值,在您的情况下是MyClass().该值将通过其复制构造函数复制到所有10个新元素.

究竟MyClass()意味着什么取决于你的班级.只有你知道.

在实现上述接口时,允许PS标准库实现使用函数重载而不是默认参数.如果某个实现决定使用函数重载,它可能会声明一个只有一个参数(大小)的构造函数std::vector.但这并不影响最终结果:所有向量元素应该开始生命,就好像它们是值初始化的一样.