Foros del Web » Programación para mayores de 30 ;) » C/C++ »

sobrecargas y tal

Estas en el tema de sobrecargas y tal en el foro de C/C++ en Foros del Web. buenas supongamos que tenemos el metodo Cita: CHAR * IMPRIMIR() que simplemente quiero que me muestre por pantalla el string y me lo devuelva por ...
  #1 (permalink)  
Antiguo 16/11/2008, 16:59
 
Fecha de Ingreso: noviembre-2008
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
sobrecargas y tal

buenas

supongamos que tenemos el metodo
Cita:
CHAR * IMPRIMIR()
que simplemente quiero que me muestre por pantalla el string y me lo devuelva por referencia hasta aqui facil con esto
Cita:
ARRAY = OBJETO.IMPRIMIR() // muestra y asigna
pero ahora si ago esto por ejemplo
Cita:
OBJETO.IMPRIMIR() // solo muestra
asi a secas el programa me dice que no he liberado memoria como es normal

y digo yo, hay alguna manera de arreglar esto con el mismo metodo IMPRIMIR
hay alguna forma de sobrecargar el metodo para que cuando se le asigna a otro array que imprime y asigne, y cuando se le llame sin motivo que llame a la otra funcion IMPRIMIR que solo imprima por pantalla y no devuelva nada
usease
Cita:
void IMPRIMIR()
char * IMPRIMIR()
yei gracias de antemano
  #2 (permalink)  
Antiguo 17/11/2008, 04:41
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: sobrecargas y tal

Buenos dias,

para sobrecargar una funcion, las firmas que cada una tiene que ser distinta. Y el tipo que devuelve la funcion no es parte de la firma. Por ejemplo:

Código:
int UnaFuncion();
char* UnaFuncion(); // => error, la firma es igual
Para obtener una firma distinta, 2 maneras:
1. una diferencia en los paramtros de las funciones. Por ejemplo:
Código:
int UnaFuncion();
int UnaFuncion( int unNumero );
int UnaFuncion( int unNumero, int unOtroNumero);
// etc...
2. utilizar un modificator de función distinto. Por ejemplo:
Código:
int UnaFuncion();
int UnaFuncion() const;
En tu caso, no se cual seria la mejor solucion, pero ya puedes hacer esto (que seria mucho mucho mejor que lo que estas haciendo ahora):
Código:
void Imprimir(); // solo muestra
void Imprimir( std::string & texto); // muestra y asigna el texto en el parametro 'texto'
La secunda version de Imprimir toma una string en parametro y la rellena. Pasando la string por referencia, ganas tiempo al ejecucion, y a ademas respeta un metedo de desarollo muy famoso y comodo (RAII) que asegura una gestion correcta de memoria.

Hope it helps.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:34.