Nagie's DevStory

[CPP] 14. 함수의 파라미터 기본값 본문

Programming/C++

[CPP] 14. 함수의 파라미터 기본값

Nagie 2023. 10. 21. 16:26
728x90
//C
#include <stdio.h>

void exampleFunction(int a, int b) {
    // 함수 내용
}

int main() {

    exampleFunction(1, 2); // 모든 인수를 명시적으로 전달
}


//C++
#include <iostream>

void exampleFunction(int a, int b = 0) {
    // 함수 내용
}

int main() {

    exampleFunction(1); // b의 기본값인 0으로 초기화
    exampleFunction(1, 2); // b에 명시적인 값 전달
}

 

우선 C를 기준으로 생각해 보자.

C는 초기 버전부터 함수의 파라미터 디폴트 값(Parameter default value)을 지원하지 않았다.

함수를 호출할 때 모든 파라미터에 대한 값을 명시적으로 제공해야 하며 C는 함수 호출 시 파라미터를 생략할 수가 없다.

 

그런데 C++에선 함수의 파라미터 디폴트 값(Default arguments)을 지원한다.

이를 통해 파라미터에 기본값을 할당할 수 있으며

호출자는 필요한 경우 명시적으로 파라미터를 전달하거나 생략이 가능하다.

따라서 C와는 다르게 C++에선 파라미터의 디폴트값 설정으로 인해 함수의 인터페이스를 유연하게 만들 수 있으며 

호출자에게 더 많은 옵션을 제공할 수 있고 이는 함수 오버 로딩을 줄일 수 있는 여지가 생겨

코드를 간결하게 만들어 주는 역할까지 한다.

 

다만 조심해야 하는 부분이 있는데

헤더 파일과 소스 파일로 분할해서 코드를 작성할 때는

반드시 디폴트 값을 함수의 원형이 선언된 헤더 파일에 작성해 줘야 하고(관례)

디폴트 값은 오른쪽부터 채워 넣어야 한다.

이걸 무시할 경우 컴파일러는 어느 파라미터를 생략해야 할지 판단하기가 모호해져 에러를 띄운다.

728x90
Comments