[C con Clase] sobre operadores

Steven Davidson srd4121 en njit.edu
Lun Jun 15 19:30:54 CEST 2009


Hola Kalith,

Kalith wrote:
> Buenas tengo duda con dos operadores y no encuentro una referencia
> clara sobre todo del primero:
> 
> el operador ^ se que es un operador para manejo de bits pero lo he
> visto usar asi:
> 
> string^ variable
> 

Nunca he visto este uso con cadenas y variables. Sospecho que se trata 
de una sobrecarga del operador ^ para realizar otra operación. Su 
funcionalidad primitiva resultaría en algo incoherente.

> /*... */
> 
> otro operador es el operador de direccion normalmente o por lo que yo
> conozco usado de esta forma
> 
> &a siendo a una variable eso para obtener una direccion de memoria
> 
> o en funciones
> 
> void foo(int &valor)
> 
> pero lo he visto ultimamente que lo usan asi
> 
> int var&
> 
> class var&
> 
> como parametros de funciones etc
> 

En esta situación, debes tener presente que el símbolo & es un operador 
en C/C++ pero también un declarador en C++. Esto significa que en C++, 
podemos usar & como un operador en una expresión con el fin de conseguir 
la dirección de memoria de un "valor izquierda", como se llama 
comúnmente; esto suele ser una variable.

Con un declarador, el símbolo & significa que estamos declarando una 
referencia, que es un sobrenombre o "apodo" para una variable. Por ejemplo,

int var = 4;
int & ref = var;

Con funciones, podemos usar referencias para pasar información por 
referencia, valga la redundancia. Por ejemplo,

void inc( int &ref )  { ref++; }
...
cout << inc( var );

Aparecerá en pantalla:

5

porque hemos pasado 'var' por referencia.



Espero haber aclarado las dudas.

Steven





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