Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 365 — #403<br />
✐<br />
12.5. Sobrecargar la asignación<br />
conti<strong>en</strong>e [Spot], rc = 1<br />
Entrando <strong>en</strong> el constructor de copia<br />
Dog ñaadido:[Fido], rc = 2<br />
DogHouse constructor de copia<br />
[construido por copia FidoHouse]<br />
conti<strong>en</strong>e [Fido], rc = 2<br />
Despues de la óconstruccin por copia de Bobs<br />
fidos:[FidoHouse] conti<strong>en</strong>e [Fido], rc = 2<br />
spots:[SpotHouse] conti<strong>en</strong>e [Spot], rc = 1<br />
bobs:[construido por copia FidoHouse]<br />
conti<strong>en</strong>e[Fido], rc = 2<br />
Entrando spots = fidos<br />
Eliminando perro: [Spot], rc = 1<br />
Borrando Perro: [Spot], rc = 0ñ<br />
Aadido Dog: [Fido], rc = 3<br />
DogHouse operador= : [FidoHouse asignado]<br />
conti<strong>en</strong>e[Fido], rc = 3<br />
Despues de spots = fidos<br />
spots:[FidoHouse asignado] conti<strong>en</strong>e [Fido], rc = 3<br />
Entrando <strong>en</strong> la auto óasignacin<br />
DogHouse operador= : [construido por copia FidoHouse]<br />
conti<strong>en</strong>e [Fido], rc = 3<br />
Despues de la auto óasignacin<br />
bobs:[construido por copia FidoHouse]<br />
conti<strong>en</strong>e [Fido], rc = 3<br />
Entando r<strong>en</strong>ame("Bob")<br />
Despues de r<strong>en</strong>ame("Bob")<br />
DogHouse destructor: [construido por copia FidoHouse]<br />
conti<strong>en</strong>e [Fido], rc = 3<br />
Eliminando perro: [Fido], rc = 3<br />
DogHouse destructor: [FidoHouse asignado]<br />
conti<strong>en</strong>e [Fido], rc = 2<br />
Eliminando perro: [Fido], rc = 2<br />
DogHouse destructor: [FidoHouse]<br />
conti<strong>en</strong>e [Fido], rc = 1<br />
Eliminando perro: [Fido], rc = 1<br />
Borrando perro: [Fido], rc = 0<br />
Estudiando la salida, rastreando el código fu<strong>en</strong>te y experim<strong>en</strong>tando con el programa,<br />
podrá ahondar <strong>en</strong> la compr<strong>en</strong>sión de estas técnicas.<br />
Creación automática del operador =<br />
Dado que asignar un objeto a otro del mismo tipo es una operación que la mayoría<br />
de la g<strong>en</strong>te espera que sea posible, el compilador automáticam<strong>en</strong>te creará un type::operator=(type)<br />
si usted el programador no proporciona uno. El comportami<strong>en</strong>to<br />
de este operador imita el del constructor de copia creado automáticam<strong>en</strong>te;<br />
si la clase conti<strong>en</strong>e objetos (o se deriva de otra clase), se llama recursivam<strong>en</strong>te a o-<br />
perator= para esos objetos. A esto se le llama asignación miembro a miembro. Por<br />
ejemplo:<br />
//: C12:AutomaticOperatorEquals.cpp<br />
#include <br />
using namespace std;<br />
class Cargo {<br />
public:<br />
365<br />
✐<br />
✐<br />
✐<br />
✐