c++: how does memberwise assignment work?
c++, variable-assignment
Solution
A b=a;
Is not assignment, it is called as Copy Initialization.
The implicitly generated copy constructor is called to create an new object `b` from the existing object `a`. The implicitly generated copy constructor makes a copy of the `array` member.
For completeness I am going to add here the standard citation from the marked duplicate.
C++03 Standard: 12.8 (Copying class objects)
Each subobject is copied in the manner appropriate to its type:
- if the subobject is of class type, the copy constructor for the class is used;
- if the subobject is an array, each element is copied, in the manner appropriate to the element type;
- if the subobject is of scalar type, the built-in assignment operator is used.
Problem
Possible Duplicate: How are C array members handled in copy control functions? If I don't override the `operator =` of a class, it will use default memberwise assignment. But what does it mean? ``` struct A { int array[100]; }; A a; A b=a; ``` No error. How does `b` copes `a`'s`array`? Normally `array_b = array_a` is invalid. Another exampe: ``` struct A { vector<int> vec; }; A a; A b=a; ``` How does `b` copes `a`'s`vec`? Through assignment(`vec_b = vec_a`), constructor(`vec_b = vector<int>(vec_a)`) or other mystery way?