2012-12-04 6 views
8

저는 C++ 초보자를 시작했습니다. 좀 자바 경험이 (하지만 난 솔직히 자바에서 기본 인수를 사용 적이 있다고 한)기본 인수를 잘못 사용하고 있습니까?

이것은 코드입니다 ..

그래서, 언급 한 바와 같이, 내 문제는 기본 인수입니다 내가 사용 :

#include <iostream> 

using namespace std; 

//add declaration 
int add(int a, int b); 

int main (void) 
{ 
     int number1; 

     cout << "Enter the first value to be summed: "; 
     cin >> number1; 
     cout << "\nThe sum is: " << add(number1) << endl; 
} 

int add(int a=10, int b=5) 
{ 
     return a+b; 
} 

내가 g에서 얻을 응답을 ++ 컴파일러는 "너무 적은 인수가 '추가 int로 (INT, INT)'

나는이 잘못된 일을 오전 기능 (나는했습니다? 문자 그대로의 인자로 시도해보기도 함)

P. 코드 스 니펫을 올바르게 표시 할 수없는 것 같습니다. 시스템이 변경 되었습니까?

+4

기본 인수가 선언에 포함됩니다. 코드를 포맷하고 붙여 넣거나 백틱을 두지 않고 모두 강조 표시 한 다음 {} 버튼을 클릭하십시오. – chris

+2

여러분, 고맙습니다. 이 커뮤니티가 몇 초 내에 해결할 수있는 문제에 대해 감사드립니다. – yoonsi

답변

14

그것은 다른 방법은 주위

//add declaration 
int add(int a=10, int b=5); 


int add(int a, int b) 
{ 
    return a+b; 
} 

§ 8.3.6 기본 인수의 기본 인수는 단지 함수 선언의 매개 변수 선언 절에서 또는 템플레이트에 명시되어야한다 매개 변수. 기본 인수는 매개 변수 팩에 대해 지정되어서는 안됩니다.

+7

이유를 알고 싶다면 컴파일러가 호출 사이트에서 기본값을 알아야하기 때문입니다. 함수의 본문은 다른 파일에있을 수 있으므로 정보를 사용할 수 없습니다. –

+0

또한 주목할 가치가있다. 변수 이름 (이 경우'a')은 함수 정의 (특히 .h 및 .cpp 파일로 구분할 때 읽기 및 편집이 용이함)에서만 필요합니다. 선언은'int add (int = 10, int = 5);'와 같이 보일 것이며 정의 헤더는 간단히'int add (int a, int b)'가 될 것이다. 또한 정의에서 매개 변수 목록 뒤에 세미콜론을 사용해야합니다. –

+0

@ LoganBesecker 좋은 지점, 고정, 고마워 – billz