C++/C++ 기본

디폴트 매개 변수

검정비니 2018. 7. 30. 17:53
728x90
반응형

디폴트 매개 변수



함수가 호출될 때 매개 변수에 값이 넘어오지 않는다면, 미리 정해진 디폴트 값을 받도록 선언된 매개 변수를 디폴트 매개 변수(default parameter) 혹은 기본 매개 변수라고 부른다.




1. 디폴트 매개 변수 선언



디폴트 매개 변수는 '매개 변수 = 디폴트 값' 형태로 선언된다. 다음은 디폴트 매개 변수를 가진 star() 함수 사례이다.


i.e.

void star(int a=5); //매개 변수 a의 기본 값은 5가 된다.


int a는 디폴트 매개 변수로서 디폴트 값으로 5를 가지도록 선언되었다. 디폴트 매개 변수를 가진 함수를 호출할 때는 디폴트 매개 변수에 값을 넘겨주어도 되고 생략해도 된다. 생략하는 경우 자동으로 디폴트 값이 매개 변수에 전달된다. star() 함수는 다음과 같이 2가지 모양으로 호출할 수 있다.


i.e.

star(); //매개 변수 a에 디폴트 값 5 자동 전달. star(5)와 동일

star(10); //매개 변수 a에 10 전달


디폴트 매개 변수에 디폴트 값을 전달하는 것은 컴파일러에 의해 처리된다.




2. 디폴트매개 변수에 관한 제약 조건



디폴트 매개 변수를 가진 함수를 선언할 때 지켜야 할 규칙이 있다. 디폴트 매개 변수는 모두 끝 쪽에 몰려 선언되어야 한다. 디폴트 매개 변수는 보통 매개 변수 앞에 선언될 수 없으며 다음 함수 선언은 잘못된 것이다.


i.e.

void calc(int a, int b =5, int c, int d=0); //컴파일 오류

void sum(int a=0, int b, int c); //컴파일 오류


위의 calc() 함수를 다음과 같이 수정하면 성공적으로 컴파일된다.


i.e.

void calc(int a, int b=5, int c=0, int d=0); //컴파일 성공




3. 매개 변수에 값을 정하는 규칙



디폴트 매개 변수를 가지고 있는 함수의 호출문을 컴파일할 때, 컴파일러는 함수 호출문에 나열된 실인자 값들을 앞에서부터 순서대로 함수의 매개 변수에 전달하고, 나머지는 디폴트 값으로 전달한다.


디폴트 매개 변수는 변수에 초깃값을 지정하는 것과 유사하며, 디폴트 매개 변수에 대한 호출을 처리하는 것은 컴파일러의 기능이다.




4. 함수 중복 간소화



디폴트 매개 변수의 최대 장점은 함수 중복을 간소화할 수 있다는 점이다.


다음은 Circle 클래스의 중복 생성자들을 디폴트 매개 변수를 가진 하나의 생성자로 간소화 시킨 사례이다.


i.e.

//간소화 전

class Circle {

.....

int radius;

public:

Circle() { radius = 1; }

Circle(int r) { radius = r; }

.....

};


//간소화 후

class Circle {

.....

int radius;

public:

Circle(int r=1) { radius = r; }

};

반응형

'C++ > C++ 기본' 카테고리의 다른 글

C++ 프렌드 개념  (0) 2018.08.02
static 멤버  (0) 2018.07.31
함수 중복  (0) 2018.07.28
대입 연산자  (0) 2018.07.28
묵시적 복사 생성  (0) 2018.07.28