rueki
매개변수의 기본값 본문
728x90
반응형
이번에는 함수의 매개변수의 기본값에 대해서 알아보려고한다.
함수에 인자를 선언할 때 아래와 같이 0이라는 default값을 주고 선언을 할 수도 있고
int x와 같이 변수만 선언을 할 수가 있는데 아래의 코드에서는 0이라는 기본값을 주었기에 10을 받을때는 10이,
아무런 값을 주지 않았을 때는 기본값 0이 출력된다.
#include <iostream>
using namespace std;
//int x =0 -> default parameter
void print(int x=0)
{
cout << x << endl;
}
int main()
{
print(10); // 10
print(); //0 출력됨
return 0;
}
이번에는 새로운 예제이다. 세 개의 변수를 선언했으나, 기본값을 부여하지는 않았다.
void print(int x=10, int y=20, int z = 0);
// 끝의 매개변수만 기본값설정할때는 선언되나 중간변수에만 설정하면 에러
void print(int x, int y, int z)
{
cout << x << endl;
}
보통 c/c++에서 보았겠지만, 함수를 위에 먼저 선언만 하고 세부 내용은 아래에 작성하는 코드를 본 적이 있을 것이다.
여기서 만약에 y에만 기본 값을 설정했을때는 에러가 나지만, 맨 끝의 변수만 선언했을 때는 에러가 나지 않는 것을 확인 할 수가 있다.
이번에는 함수 오버로딩에 대한 예제이다.
//함수오버로딩과 관련된 케이스
void print(std::string str) {}
void print(char ch = ' ') {}
이렇게 선언을 하고 print()를 하면 char 형이 들어있는 것을 적용될 것이다. 그러나 아래와 같은 예제의 경우에는 모호한 경우가 생긴다.
void print(int x) {}
void print(int x, int y = 20) {}
int main()
{
print(10);// 모호한 경우, y에 default값이 존재하기 때문, default값이 오버로딩에도 영향을 주게된다.
return 0;
}
10이 어느 x에 전달되는건지 알 수가 없다. 고로 결론으로는 default값이 오버로딩에도 영향을 끼친다.
728x90
반응형
'C,C++ 기초 및 자료구조' 카테고리의 다른 글
C++ 입출력 (0) | 2020.09.16 |
---|---|
함수 포인터 (0) | 2020.07.26 |
함수 오버로딩(Function Overloading) (0) | 2020.07.18 |
다양한 타입의 return (0) | 2020.07.15 |
Call by Value, Call by Reference (0) | 2020.07.12 |
Comments