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?

Original source

Related problems