Título: [Duda] Sobrecarga de operadores Publicado por: BlackZeroX en 13 Junio 2011, 09:20 am Estoy haciendo infinidad de pruebas con estas sobrecargas que me han gustado demasiado a tal grado que veo por que dicen que c es tan potente, pero bueno yendo al punto mi problema surge al momento de sobrecargar el operador "+" y realizo varias sumas de mi clase.
El resultado de la prueba debería de ser: 620 pero me da 20 alguien sabe a que se debe?. Código
Dulces Lunas!¡. Título: Re: [Duda] Sobrecarga de operadores Publicado por: fantasma306 en 13 Junio 2011, 14:35 pm el fallo esta en lo que devuelven estas dos funciones...
Citar clstest &operator +( clstest &c1 ) { clstest tmp; int i = c1; tmp = (this->sMsg + i); return tmp; } clstest &operator +( int c1 ) { clstest tmp ; int a = (this->sMsg + c1); tmp = a; return tmp; } el objeto tmp desaparece al terminar la funcion, lo que tienes que devoler es una copia del objeto, y no la referencia a ese objeto ( ya que no existe ) saludos Título: Re: [Duda] Sobrecarga de operadores Publicado por: BlackZeroX en 13 Junio 2011, 14:59 pm Citar ... 4) Ahora el objeto temporal temp se copia a otro objeto temporal sin nombre, y temp es destruido. Y el objeto temporal sin nombre se pasa como parámetro al operador de asignación. ... http://c.conclase.net/curso/?cap=035b#037_punteros lo curioso es que solo funciona el código de esta manera: a = a + a pero si agrego mas sumando's a la expresión valen chocho. Dulces Lunas!¡. Título: Re: [Duda] Sobrecarga de operadores Publicado por: fantasma306 en 13 Junio 2011, 15:24 pm conforme tu lo has puesto, esas funciones estan devolviendo la direccion de TMP (con el &), lo que pasa que TMP a sido destruido... que hay en esas direcciones?? (basura) si quitas el "&" (que has puesto en el tipo de retorno) estaras devolviendo la copia del objeto a otro objeto temporal sin nombre como dice en la pagina. (algo que seguro que no necesitas que te lo diga, seguro que ya lo sabes) es lo mismo que pasa con los parametros por referencia y los parametros por valor si pones el "&" estaras pasando la direccion de la variable... y si no pones el & se creara una copia temporal de la variable Título: Re: [Duda] Sobrecarga de operadores Publicado por: BlackZeroX en 13 Junio 2011, 20:55 pm .
soy un nesio xP gracias, me hiciste revisar nuevamente la pagina. Dulces Lunas!¡. |