Hacer el prototipo de la sobrecarga de función de c++

0

Pregunta

Quiero hacer una sobrecarga de la función con un prototipo en C++.

#include <iostream>

using namespace std;

int rectangle(int p, int l);

int main() {
    cout << rectangle(3);
    return 0;
}

int rectangle(int p) {
    return p*p;
}

int rectangle(int p, int l) {
    return p*l;
}

Tengo error en

int rectangle(int p, int l);

es posible hacer el prototipo con una sobrecarga de la función? si es posible como hacerlo

c++ function overloading
2021-11-24 03:34:09
1

Mejor respuesta

1

Usted tiene que declarar la función antes de utilizar/llamar. Que se declare que el 2 argumento de la versión de rectangle la función, pero usted parece olvidar a declarar el 1 argumento tomando versión.

Como se muestra a continuación si usted agregue la declaración de la 1 argumento versión de su programa de obras(compila).

#include <iostream>
using namespace std;

//declare the function before main
int rectangle(int p, int l);
int rectangle(int p);//ADDED THIS DECLARATION
int main() {
    cout << rectangle(3);
    return 0;
}
//define the functions after main
int rectangle(int p) {
    return p*p;
}
int rectangle(int p, int l) {
    return p*l;
}

La salida del programa puede ser visto aquí.

Solución alternativa:

Si usted no desea declarar cada función por separado, a continuación, sólo debe definir antes de principal en lugar de declararlas como se muestra a continuación.

#include <iostream>
using namespace std;

//define the functions before main. This way there is no need to write a separate function declaration because all definition are declarations
int rectangle(int p) {
    return p*p;
}
int rectangle(int p, int l) {
    return p*l;
}

int main() {
    cout << rectangle(3);
    return 0;
}

2021-11-24 03:58:54

"Usted tiene que declarar la función antes de utilizar/llamar." - alternativamente, la función de definir antes de que sea utilizado sin una declaración por separado. Para que un único archivo de programas, adelante-declaración sólo es necesario cuando hay una dependencia mutua.
Dai

así que tengo el mismo número de prototipos, con la sobrecarga de la función?
Hanif Ramadhani

@HanifRamadhani o poner todas sus funciones antes de la principal. El uso de adelante de la declaración, a menos que usted realmente necesita.
Louis Go

@HanifRamadhani Si usted no desea declarar cada función por separado, entonces usted puede definir de ellos antes de la principal, como lo he hecho en mi solución alternativa. Echa un vistazo a la alternativa de solución que he añadido en mi respuesta.
Anoop Rana

@HanifRamadhani Tu eres bienvenido. ¿Puede usted marcar mi respuesta como correcta si te ayudó.
Anoop Rana

Incluso me atrevería a invertir el orden de la sobrecarga y de la llamada rectangle(p, p) de rectangle(int p).
Jarod42

@Jarod42 Sí que es posible, pero me pregunto si es una buena idea en este caso. En este caso sencillo, no hay necesidad de llamar a otra función, porque podemos obtener el resultado por escrito directamente return p*p en lugar de aumentar la sobrecarga de la llamada por llamada a otra función.
Anoop Rana

Se elimina la "duplicación" de la lógica. Oportunidad son el código sería insertados por el compilador de todos modos.
Jarod42

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................