rueki

매개변수의 기본값 본문

C,C++ 기초 및 자료구조

매개변수의 기본값

륵기 2020. 7. 21. 23:05
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