2010-03-20 8 views
8

Supongamos que tengo una estructura en C++ que contiene un nombre y un número, p.¿Cómo funciona el operador de asignación predeterminado en struct?

struct person { 

char name[20]; 

int ssn; 

}; 

Supongamos que declarar dos variables de la persona:

person a; 

person b; 

donde a.name = "George", a.ssn = 1, y = b.name "Fred" y b.ssn = 2 .

Supongamos adelante en el código

a = b; 

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

¿Hay una pregunta en algún lugar de ahí? – Turtle

+1

Skydoor parece creer que SO es un reemplazo para leer libros, o incluso pensar. 129 preguntas - cero respuestas. –

+0

Hablando de libros, ¿puedo recomendarle 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

Respuesta

22

el operador de asignación por defecto hace una asignación recursiva miembro-racional de cada miembro.

+0

respuesta perfecta en 1 respuesta breve y descriptiva – Sam

+0

La mejor respuesta que he visto aquí entre los de una línea. – hkBattousai

8

El operador de asignación predeterminado en C++ usa Memberwise Assignment para copiar los valores. Eso es, efectivamente, asigna a todos los miembros el uno al otro. En este caso, eso causaría que b tenga los mismos valores que a.

Por ejemplo

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 
Cuestiones relacionadas