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                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.