[C con Clase] ¿que significa la sentencia .....return *this

Steven Davidson srd4121 en njit.edu
Mar Sep 21 21:50:57 CEST 2010


Hola Wolverine,

On 9/21/2010 3:35 PM, wolverine_ch wrote:
> ya voy entendiendo....y la referencia de un objeto cuando actua como
> parametro demtro d una funcion, los datos del objeto necesariamente
> se van a modificar al salir dde la funcion?
>

Tenemos acceso directo a la variable, la cual sirve para obtener la 
información guardada en ella. Por lo tanto, lo que hagamos con esa 
variable puede modificar su información. Por ejemplo,

void inc( int &ref )
{
   ref++;
}

int main()
{
   int num = 10;
   inc( num );

   return 0;
}

Si indicamos 'const', entonces no podemos modificar nada acerca de esa 
variable. Por ejemplo,

void mostrar( const int &ref )
{
   cout << ref;
}

int main()
{
   int num = 10;

   mostrar( num );
   cout << endl;

   mostrar( 20 );
   cout << endl;

   return 0;
}

Como puedes ver, se nos permite pasar valores literales como parámetros, 
porque la referencia es a un valor constante.


Lo mismo sucede con tipos y objetos más complejos. Por ejemplo,

struct Persona
{
   char szNombre[100];
   char szApellidos[200];
};

void asignarNombre( Persona &ref, const char szNombre[100] )
{
   strncpy( ref.szNombre, szNombre );
}

Aquí vemos que 'szNombre' de un objeto en 'asignarNombre()' es 
modificado, mientras que 'szApellidos' no lo es.


Hasta pronto,

Steven





Más información sobre la lista de distribución Cconclase