2010-03-20 60 views
8

假設我有一個包含名稱和數字的C++結構,例如默認賦值運算符如何在struct中工作?

struct person { 

char name[20]; 

int ssn; 

}; 

假設我聲明瞭兩個人變量:

person a; 

person b; 

其中a.name = 「喬治」,a.ssn = 1,b.name = 「弗雷德」 和b.ssn = 2 。

在後面的代碼

a = b; 

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

是否有問題的地方在那裏? – Turtle 2010-03-20 17:43:25

+1

Skydoor似乎相信,SO是閱讀書籍甚至思想的替代品。 129個問題 - 零答案。 – 2010-03-20 17:53:31

+0

說到書籍,我可以指給你看http://www.amazon.com/Primer-Plus-5th-Stephen-Prata/dp/0672326973/ref=sr_1_1?ie=UTF8&s=books&qid=1269107822&sr=8-1 – wheaties 2010-03-20 17:57:37

回答

22

默認賦值運算符確實的各部件的部件逐遞歸分配假設。

+0

在1短,描述性答案完美答案 – Sam 2013-09-13 13:43:16

+0

最佳答案我見過這裏是單線的。 – hkBattousai 2015-06-05 12:06:19

8

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