Aunque el polimorfismo es un fenómeno ampliamente útil en C++, a veces puede ser bastante complicado. Por ejemplo, considere el siguiente fragmento de código:
#include<iostream> using namespace std; void test(float s,float t) { cout << "Function with float called "; } void test(int s, int t) { cout << "Function with int called "; } int main() { test(3.5, 5.6); return 0; }
Puede parecer que la llamada a la prueba de función en main() dará como resultado la salida «Función con llamada flotante», pero el código da el siguiente error:
In function 'int main()': 13:13: error: call of overloaded 'test(double, double)' is ambiguous test(3.5,5.6);
Es un hecho bien conocido en la sobrecarga de funciones que el compilador decide qué función debe invocarse entre las funciones sobrecargadas. Si el compilador no puede elegir una función entre dos o más funciones sobrecargadas, la situación es – » Ambigüedad en la sobrecarga de funciones».
Rectificando el error: simplemente podemos decirle al compilador que el literal es flotante y NO doble proporcionando el sufijo f .
Mira el siguiente código:
#include<iostream> using namespace std; void test(float s,float t) { cout << "Function with float called "; } void test(int s,int t) { cout << "Function with int called "; } int main() { test(3.5f, 5.6f); // Added suffix "f" to both values to // tell compiler, it's a float value return 0; }
Producción:
Function with float called
Este artículo es una contribución de Aakash Sachdeva. Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA