인 프로토 타입의 과부하 기능은 c++

0

질문

을 만들고 싶습니다 과부하는 함수 프로토 타입에서는 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;
}

나에서의 오류

int rectangle(int p, int l);

는 가능하게 프로토타입으로 과부하 기능입니까? 가능하면 그것을 어떻게

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

최고의 응답

1

당신이 선언하는 기능을 사용하기 전에 전화/니다. 당신이 한 선언 2 인수 버전 rectangle 기능 하지만 당신은 것을 잊을 선언하기 1 인수를 복용 버전입니다.

아래와 같이 추가하면 선언에 대한의 1 인자음에는 귀하의 프로그램이 작동하는(컴파일하고).

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

의 출력을 프로그램을 볼 수 있습니다 여기에.

대체 솔루션:

지 않는 경우 선언하고 싶은 각 기능에 별도로 그럼 당신은 단지 그들을 정의하기 전에 메인을 선언하는 대신 그들은 아래와 같습니다.

#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

"당신이 선언하는 기능을 사용하기 전에 전화/니다." -양자택일로,그의 기능을 하기 전에 그것을 사용하지 않고 별도의 선언입니다. 단일 파일을 프로그램,앞으로 선언은 필요가있는 경우의 상호 의미할 수 있습니다.
Dai

그래서 필요해요 같은 수의 프로토타입으로 과부하 기능입니까?
Hanif Ramadhani

@HanifRamadhani 또는 당신의 모든 기능을 하기 전에습니다. 사용 앞으로 선언하지 않는 한 당신이 정말로 그것이 필요합니다.
Louis Go

@HanifRamadhani 지 않는 경우 선언하고 싶은 각 기능에 별도로,당신은 그냥 그들을 정의하기 전에 주로 수행에 대한 솔루션. 체크아웃 대체 솔루션 을 추가 했을 내 대답이다.
Anoop Rana

@HanifRamadhani 의 오신 것을 환영 합니다. 할 수 있 나의 응답으로 올바른 경우 그것은 당신이 도움이 되었습니다..
Anoop Rana

나는 심지어 역방향 주문의 과부하 및 전화 rectangle(p, p)rectangle(int p).
Jarod42

@Jarod42 예 가능하지만 내가 궁금해하는 좋은 아이디어에서는 이 경우입니다. 이 간단한 경우에 필요 없이 다른 함수를 호출하기 때문에 우리가 얻을 수 있다는 결과에 의해 직접 쓰기 return p*p 신의 증가 호출 오버헤드를 호출하여 다른 기능이다.
Anoop Rana

그것을 제거하"중복"논리입니다. 기회는 코드는 인라인되여 어쨌든 컴파일러.
Jarod42

다른 언어로

이 페이지는 다른 언어로되어 있습니다

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