Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





uso de sobrecarga de operadores

Iniciado por Zeigon, 18 de Enero de 2003, 08:30:12 PM

« anterior - próximo »

Zeigon

                                hay una cosa q me confunde pq en algunos sitios lo veo de un modo y en otros, de otro :P

el caso, por ejemplo sobrecargas el '=' :



miclase operator =(miclase c) {

...

}



//y luego si tienes dos objetso de esa clase



miclase ob1, ob2;



ob1 = ob2; /*esto valdría para usar el operador sobrecagado? o habría q ponerlo de esta otra forma?*/



ob1.operator = ob2;



es q en algunos sitios se usa la 1ª forma y en otros la 2ª, cual es mejor, o cual se usa más??

otra cosa, los operadores sobrecargados se usan solo con clases, no? pq es de la única forma en q se puede declarar lo q hace ese operador, no? :?:

venga gracias                                
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

Grugnorr

                                Hombre, la gracia de los operadores sobrecargados es esa, usar los operadores, para llamar a una función, crearías una función

Si sobrecargas el =: A=B, sí, el +: A+B....


Por cierto, cuidado con ese operator=() que has puesto  :!: . Debería aceptar una referencias constante y devolver una referencia...  

La sobrecarga del operador de asignación está relacionada con el constructor de copia... intenta leer algo en un libro de c++                                
hat the hells!

Zeigon

                                reholas, es esta del '=' una de las cosas q leí y q dude al principio, pero yo creo una cosa, lo q dices tú de q tiene q recibir y enviar referencias, yo lo he visto en un ejemplo en el q las variables privadas son punteros, entonces sí q hace falta coger una referencia para q no se pongan los punteros apuntando al mismo sitio; pero si no usas punteros, no hace falta, pq se cogería solo el valor, no la dirección, no sé si me explico.

y lo de q reciba tb un const, es para q no se pueda cambiar ningun valor del otro objeto, no?



//de una clase llamada 'cadena' con una variable privada char * cadena;



cadena &cadena::operator= (const &c){



    if (this != &c) {

          delete [] cadena;

          if (cadena.c){

               cadena = new char [strlen(c.cadena)+1];

               strcpy(cadena, c.cadena);

           }

          else cadena = NULL;

    }

    return *this;

}



este es el ejemplo al q me refiero. lo q NO sé es pq devuelve this, si se supone q ya estás tratando el objeto sobre el q se va a aplicar la igualdad, no hace falta q devuelva el contenido, no??                                
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

Lorien

                                Si haces:

(a+B).Paint();

O lo tienes por referencia o no va.

Te aconsejo el capitulo de operadores del Thinking in C++, ahi te lo explica casi todo.

Un saludo!
Lorien!                                

 /            / _
 X=o=> Lorien |-<#>-|
/              ¨ /

synchrnzr

                                Lorien ¿qué haces tú por aquí con la de curro que tenemos? X'DDD

sync