elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Pregunta Sobrecarga de funciones en C++?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Pregunta Sobrecarga de funciones en C++?  (Leído 2,596 veces)
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
¿Pregunta Sobrecarga de funciones en C++?
« en: 17 Abril 2013, 23:54 pm »

Hola tengo una duda sobre la sobrecarga de funciones:

Yo cree un programa con la siguiente sintaxis:

Código:
#include <iostream>

using namespace std;

void holaxd(float,float);
void holaxd(double,double);

int main()
{
holaxd(12.2,12.2);
holaxd(24.2,24.2);

system("PAUSE");
return 0;
}

void holaxd(float n,float y)
{
cout <<"FLOAT!"<<endl;
cout << n + y << endl;
}

void holaxd(double x, double z)
{
cout <<"DOUBLE!"<<endl;
cout << x - z << endl;
}
Y al compilarlo y ejecutarlo lo que se muestra en la consola es de:

Citar
DOUBLE!
0
DOUBLE!
0

A qué se debe esto?

Porqué no trabaja con una y luego con otra?

OTRA COSA EN LA SOBRECARGA DE FUNCIONES EL CODIGO DEBE SER SIEMPRE EL MISMO O PUEDE VARIAR ?


En línea

Luchoz95

Desconectado Desconectado

Mensajes: 58


Ver Perfil
Re: ¿Pregunta Sobrecarga de funciones en C++?
« Respuesta #1 en: 18 Abril 2013, 01:10 am »

no podes poner el mismo nombre a dos funciones
Código
  1. void holaxd(float,float);
  2. void holaxd(double,double);
tenes que cambiarlo y ponerlo asi por ejemplo ...

Código
  1. void holaxd2(float,float);
  2. void holaxd(double,double);

S2!


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Pregunta Sobrecarga de funciones en C++?
« Respuesta #2 en: 18 Abril 2013, 01:16 am »

A qué se debe esto?

Porqué no trabaja con una y luego con otra?
Porque las constantes que utilizas en las dos llamadas:
Código
  1. holaxd(12.2, 12.2);
  2. holaxd(24.2, 24.2);
Son de tipo double y eso resulta en dos llamadas a la misma funcion.

Para obtener el resultado que esperas debes utilizar como argumentos variables de tipo float o bien utilizar constantes con el sufijo 'F'. Por ejemplo:
Código
  1. holaxd(12.2, 12.2);
  2. holaxd(24.2F, 24.2F);

Otra cosa en la sobrecarga de funciones el codigo debe ser siempre el mismo o puede variar?
Esta parte no la entendi, ¿Puedes explicarlo de una forma mas clara?

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
pwnz

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: ¿Pregunta Sobrecarga de funciones en C++?
« Respuesta #3 en: 18 Abril 2013, 01:20 am »


Porqué no trabaja con una y luego con otra?

OTRA COSA EN LA SOBRECARGA DE FUNCIONES EL CODIGO DEBE SER SIEMPRE EL MISMO O PUEDE VARIAR ?

No soy un experto en C++ pero  tu problema es que estas pasando los datos directamente y la aplicacion los reconoce solo como double.

Una solucion puede ser que definas antes las variables como float y double respectivamente o hagas casting. por ejemplo:

Código
  1. double a = 11.1;
  2. double b = 12.1;
  3. float c = 111.1;
  4. float d = 112.2;
  5. holaxd(a,b);
  6. holaxd(c,d);
  7.  

o bien

Código
  1. holaxd((float) 12.2, (float) 12.2);
  2. holaxd((double) 24.2, (double) 24.2);

Respecto a tu segunda pregunta cuando sobrecargas un metodo puedes poner el codigo que te de la gana si no no tendria mucho sentido xd.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Pregunta Sobrecarga de funciones en C++?
« Respuesta #4 en: 18 Abril 2013, 01:23 am »

no podes poner el mismo nombre a dos funciones
En C++ es posible declarar funciones con el mismo nombre con la condicion de diferir en el numero o tipo de sus parametros. A ello se le conoce como sobrecarga de funciones (de ahi el titulo de este tema).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Zodiak98

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: ¿Pregunta Sobrecarga de funciones en C++?
« Respuesta #5 en: 18 Abril 2013, 21:03 pm »

Porque las constantes que utilizas en las dos llamadas:
Código
  1. holaxd(12.2, 12.2);
  2. holaxd(24.2, 24.2);
Son de tipo double y eso resulta en dos llamadas a la misma funcion.

Para obtener el resultado que esperas debes utilizar como argumentos variables de tipo float o bien utilizar constantes con el sufijo 'F'. Por ejemplo:
Código
  1. holaxd(12.2, 12.2);
  2. holaxd(24.2F, 24.2F);

Hola gracias, me sirvio lo de la F pero ahora solo por curiosidad hay alguna otra letra aparte de la F o solo es la F para identificar por ejemplo en este caso?

Citar
Esta parte no la entendi, ¿Puedes explicarlo de una forma mas clara?

Un saludo

Esta parte omitela ya la capte es algo tonto haber preguntado eso hehe :)
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: ¿Pregunta Sobrecarga de funciones en C++?
« Respuesta #6 en: 19 Abril 2013, 01:31 am »

hay alguna otra letra aparte de la F o solo es la F para identificar por ejemplo en este caso?
Con las constantes enteras puedes utilizar los sufijos U (unsigned) y L (long) y con las de punto flotante puedes utilizar F (float) y L (long double). Se puede utilizar en mayúsculas o minúsculas.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sobrecarga de ram
Dudas Generales
animalx3 1 3,088 Último mensaje 25 Junio 2010, 00:36 am
por maxx93
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 24,061 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
Pregunta sobre funciones
Programación Visual Basic
Zodiak98 3 1,830 Último mensaje 1 Mayo 2013, 14:51 pm
por ignorantev1.1
pregunta funciones
PHP
ccrunch 2 1,539 Último mensaje 26 Junio 2013, 03:03 am
por engel lex
Pregunta sobre funciones anónimas en C++ [Lambda].
Programación C/C++
Zodiak98 1 1,878 Último mensaje 25 Diciembre 2014, 19:22 pm
por SrCooper
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines