默认赋值运算符如何在struct中工作?

sky*_*oor 9 c++

假设我在C++中有一个包含名称和数字的结构,例如

struct person {

char name[20];

int ssn;

};
Run Code Online (Sandbox Code Playgroud)

假设我声明了两个人变量:

person a;

person b;
Run Code Online (Sandbox Code Playgroud)

其中a.name ="George",a.ssn = 1,b.name ="Fred",b.ssn = 2.

假设稍后在代码中

a = b;

printf("%s %d\n",a.name, a.ssn);
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 24

默认赋值运算符对每个成员执行成员方式的递归分配.


Jar*_*Par 9

C++中的默认赋值运算符使用Memberwise Assignment复制值.这就是它有效地将所有成员分配给对方.在这种情况下,会导致b具有与a相同的值.

例如

a = b;
printf("%s\n", b.name); // Prints: George
b.name[0]='T';
printf("%s\n", a.Name); // Prints George
printf("%s\n", b.name); // Prints Teorge
Run Code Online (Sandbox Code Playgroud)