반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
#include <iostream>
using namespace std;
int Adder(int num1 = 1, int num2 = 2) // 매개변수에 기본값 설정(1,2)
{
return num1+num2;
}
int main()
{
cout << Adder() << endl; // 인자 전달하지 않았으므로 1과 2가 전달된 것으로 간주
cout << Adder(5) << endl; // 첫 번째 인자만 전달해주고 있으므로 두 번째 인자는 자동적으로 2로 전달
cout << Adder(3, 5) << endl; // 인자를 3과 5로 전달(매개변수 기본값은 의미 없음)
return 0;
} |
cs |
디폴트값은 함수의 선언 부분에만 표현하기만 하면됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
#include <iostream>
using namespace std;
int Adder(int num1 = 1, int num2 = 2); // 매개변수에 기본값 설정(1,2)
int main()
{
cout << Adder() << endl; // 인자 전달하지 않았으므로 1과 2가 전달된 것으로 간주
cout << Adder(5) << endl; // 첫 번째 인자만 전달해주고 있으므로 두 번째 인자는 자동적으로 2로 전달
cout << Adder(3, 5) << endl; // 인자를 3과 5로 전달(매개변수 기본값은 의미 없음)
return 0;
}
int Adder(int num1, int num2)
{
return num1+num2;
} |
cs |
디폴트값 설정에 따른 주의사항
1
2
3
4 |
int Func(int num1 = 1, int num2 = 2, int num3)
{
// 정의
} |
cs |
1
2
3
4 |
int Func(int num1 = 1, int num2, int num3)
{
// 정의
} |
cs |
위 두 예제는 디폴트값 설정이 잘 못되었습니다.
우리가 메인함수에 Func(1,2,3)으로 설정하면 상관이 없는데 만약 Func(1)이나 Func(1,2)를 컴파일했다고 가정하자면 매개변수 num3에 전달된 인자가 없으므로 컴파일 에러가 뜬게됩니다.
하지만 아래와 같은 경우는 가능합니다.
1
2
3
4
5 |
int Func(int num1, int num2, int num3 = 3)
{
return num1+num2+num3;
}
|
cs |
1
2
3
4
5 |
int Func(int num1, int num2 = 2, int num3 = 3)
{
return num1+num2+num3;
}
|
cs |
이유는 Func(1)으로 구현하면 num1은 메인함수에 선언한 1을 인자 전달하며, num2는 기본값 2, num3은 기본값 3을 가지기때문에 오류가 안뜨는 것입니다.
반응형
'공부 > 개발노트' 카테고리의 다른 글
[C/C++] 인라인(inline) 함수 (0) | 2016.08.21 |
---|---|
[C/C++] 매크로 함수 (0) | 2016.08.21 |
[C/C++] 함수의 오버로딩의 이해 (0) | 2016.08.21 |
[C/C++] sizeof 연산자를 활용해서 배열의 크기 알아보기 (0) | 2016.08.19 |
[C/C++] 배열의 원소를 복사하기 (0) | 2016.08.19 |