Lai*_*uan 12 c++ variable-assignment
可能重复:
如何在复制控制功能中处理C数组成员?
如果我不覆盖operator =类的类,它将使用默认的成员分配.
但是这是什么意思?
struct A {
int array[100];
};
A a;
A b=a;
Run Code Online (Sandbox Code Playgroud)
没错.如何bCOPES a的array?通常array_b = array_a无效.
另一个例子:
struct A {
vector<int> vec;
};
A a;
A b=a;
Run Code Online (Sandbox Code Playgroud)
如何bCOPES a的vec?通过assignment(vec_b = vec_a),constructor(vec_b = vector<int>(vec_a))或其他神秘的方式?
A b=a;
Run Code Online (Sandbox Code Playgroud)
不是赋值,它被称为复制初始化.
调用隐式生成的复制构造函数以b从现有对象创建新对象a.
隐式生成的复制构造函数生成该array成员的副本.
为了完整起见,我将在此处添加标记副本的标准引文.
C++ 03标准:12.8(复制类对象)
每个子对象都以适合其类型的方式复制:
- 如果子对象是类类型,则使用该类的复制构造函数;
- 如果子对象是一个数组,则以适合于元素类型的方式复制每个元素;
- 如果子对象是标量类型,则使用内置赋值运算符.