If I create a vector like vector
what is the default value of each element?
Also, what if it is a vector
The constructor of std::vector<>
that you are using when you declare your vector as
vector v(10);
actually has more than one parameter. It has three parameters: initial size (that you specified as 10), the initial value for new elements and the allocator value.
explicit vector(size_type n, const T& value = T(),
const Allocator& = Allocator());
The second and the third parameters have default arguments, which is why you were are able to omit them in your declaration.
The default argument value for the new element is the default-contructed one, which in your case is MyClass()
. This value will be copied to all 10 new elements by means of their copy-constructors.
What exactly MyClass()
means depends on your class. Only you know that.
P.S. Standard library implementations are allowed to use function overloading instead of default arguments when implementing the above interface. If some implementation decides to use function overloading, it might declare a constructor with just a single parameter (size) in std::vector
. This does not affect the end result though: all vector elements should begin their lives as if they were value-initialized.