La sobrecarga de funciones es posible en C++ y Java, pero solo si las funciones deben diferir entre sí por los tipos y el número de argumentos en la lista de argumentos. Sin embargo, las funciones no se pueden sobrecargar si difieren solo en el tipo de devolución.
¿Por qué no es posible la sobrecarga de funciones con diferentes tipos de devolución?
La sobrecarga de funciones viene bajo el polimorfismo en tiempo de compilación. Durante la compilación, se comprueba la firma de la función. Por lo tanto, las funciones pueden sobrecargarse si las firmas no son las mismas. El tipo de retorno de una función no tiene efecto en la sobrecarga de funciones, por lo tanto, la misma firma de función con diferente tipo de retorno no se sobrecargará.
Ejemplo: si hay dos funciones: int sum() y float sum() , estas dos generarán un error en tiempo de compilación ya que aquí no es posible la sobrecarga de funciones.
Entendamos esto más a fondo a través de los siguientes programas en C++ y Java:
Programa C++:
CPP
// CPP Program to demonstrate that function overloading // fails if only return types are different #include <iostream> int fun() { return 10; } char fun() { return 'a'; } // compiler error as it is a new declaration of fun() // Driver Code int main() { char x = fun(); getchar(); return 0; }
Producción
prog.cpp: In function ‘char fun()’: prog.cpp:6:10: error: ambiguating new declaration of ‘char fun()’ char fun() { return 'a'; } ^ prog.cpp:4:5: note: old declaration ‘int fun()’ int fun() { return 10; } ^
Programa Java:
Java
// Java Program to demonstrate that function overloading // fails if only return types are different // filename Main.java public class Main { public int foo() { return 10; } public char foo() { return 'a'; } // compiler error as it is a new declaration of fun() public static void main(String args[]) {} }
Producción
prog.java:10: error: method foo() is already defined in class Main char foo() { return 'a'; } ^ 1 error
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