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

时间:2010-03-20 17:42:06

标签: c++

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

struct person {

char name[20];

int ssn;

};

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

person a;

person b;

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

稍后在代码中假设

a = b;

printf("%s %d\n",a.name, a.ssn);

2 个答案:

答案 0 :(得分:24)

默认赋值运算符对每个成员执行成员递归分配。

答案 1 :(得分:9)

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

相同的值

例如

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