Face prototip de supraîncărcarea funcție c++

0

Problema

Vreau sa fac un supraîncărcarea funcție cu un prototip în 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;
}

Am eroare la

int rectangle(int p, int l);

este posibil de a face prototip cu un supraîncărcarea funcție? dacă este posibil, cum se face

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

Cel mai bun răspuns

1

Ai să declare funcția înainte de a utiliza/suna-l. Ai făcut-o să declare 2 argument versiune de rectangle funcție, dar se pare că ai uitat să declare 1 argument luând versiune.

Așa cum se arată mai jos, dacă adăugați declarația pentru 1 argument versiunea apoi programul de lucrări(compilează).

#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;
}

Ieșirea din program poate fi văzut aici.

Soluție alternativă:

Dacă nu doriți să declare fiecare funcție separat, atunci ar trebui doar să le definim înainte de principalul loc de declarându-le așa cum se arată mai jos.

#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

"Ai să declare funcția înainte de a utiliza/suna-l." - alternativ, doar defini funcția înainte de a fi folosit fără o declarație separată. Pentru un singur fișier programe, transmite-declarație este necesară doar atunci când există o dependență reciprocă.
Dai

deci am nevoie de același număr de prototipuri ca supraîncărcarea funcție?
Hanif Ramadhani

@HanifRamadhani sau pune toate funcțiile înainte de principal. Utilizați înainte declarație dacă nu într-adevăr nevoie de ea.
Louis Go

@HanifRamadhani Dacă nu vrei să declare fiecare funcție în parte, atunci puteți doar să le definim înainte de principalele cum am făcut în soluție alternativă. Check out soluție alternativă care le-am adăugat în răspunsul meu.
Anoop Rana

@HanifRamadhani Ta plăcere. Puteți să marcați răspunsul meu ca fiind corectă dacă ea te-a ajutat.
Anoop Rana

Chiar mi-ar inversa ordinea de suprasarcină și de apel rectangle(p, p) din rectangle(int p).
Jarod42

@Jarod42 Da, este posibil, dar mă întreb dacă e o idee bună în acest caz. În acest caz simplu, nu este nevoie pentru a apela o altă funcție pentru că putem obține rezultatul de a scrie direct return p*p în loc de creșterea apel aeriene de asteptare o altă funcție.
Anoop Rana

Se elimină "dublarea" de logica. Sunt șanse va fi codul inline de către compilator oricum.
Jarod42

În alte limbi

Această pagină este în alte limbi

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