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
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++
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??
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!
Lorien ¿qué haces tú por aquí con la de curro que tenemos? X'DDD
sync