Default 매개변수 C++ 자습서 41

Default 매개변수 C++

Deault 매개변수는 언어 구조적인 내용보다는 일종의 편리한 테크닉입니다. 함수를 만들다 보면 매개변수가 많아지게 되고 그 중에 어떤 매개변수는 거의 정해져 있는 경우도 있습니다. 예를 들면 GUI 프로그램을 실행하기 위해서는 윈도우의 가로와 세로 길이를 매개변수로 넘겨야 합니다. 기본 해상도를 정해서 Default 매개변수로 입력해 두면 사용자는 어떤 해상도를 사용할지 고민하지 않아도 됩니다. 물론 디스플레이 기기에 따라 바꿀 수 있도록 사이즈를 별도로 전달할 수 있도록 하면 좀 더 유연성이 생길 것 입니다. 함수는 매개변수와 리턴값만 알면 사용할 수 있지만 프로그램이 복잡하면 어떤 매개변수를 써야하는지 고민하는 시간도 만만치 않게 많아집니다. Default 매개변수는 이런 고민을 덜어주자는 측면이 있습니다.

*Default 값 -> 초기화 값, 기본값 정도로 보면 됩니다.

사용법 예제

우선 default 매개변수의 사용법을 보겠습니다. Default 값에 대한 정보는 아래와 같이 함수의 원형에 표시합니다. 아래는 int 형 매개변수 세개중에 뒤에 두개에 Default 값을 설정했습니다. Default 매개변수는 왼쪽부터 적용이 됩니다. 아래의 function(int a,int b=7,int c=5)를 호출할 때 function(10) 은 int a=10 에 해당합니다. 나머지 b=7, c=5 의 할당은 Default 값으로 자동으로 적용됩니다. function(10, 20)은 a와 b에 10과 20을 할당하고 나머지 c에 Default 값 5가 적용됩니다. 이것의 장점은 분명합니다. 매개변수를 다 알지 못해도 함수를 사용할 수 있습니다.

#include<iostream>

int function(int a, int b=7, int c=5);

int main()
{

    using std::cout;
    using std::cin;
    using std::endl;

    int x1=function(10);
    int x2=function(10, 20);
    int x3=function(10, 20, 5);

    cout << "result x1: " <<x1<< endl;
    cout << "result x2: " <<x2<< endl;
    cout << "result x3: " <<x3<< endl;

    return 0;

}

int function(int a, int b, int c)
{
    return a+b+c;
}

[실행결과]
result x1: 22
result x2: 35
result x3: 35

이 테크닉을 사용하는 것은 프로그래머의 재량에 달려 있습니다만, 많은 경우 바꿀 수도 있지만 굳이 바꾸지 않아도 되는 값들을 설정하는데 사용할 수 있습니다. 추가적인 예제를 보겠습니다.

아래의 예제는 GUI 윈도우 생성코드를 단순화 한 것 입니다. (C++의 GUI는 대체적으로 이것보다 복잡합니다) GUI 프레임 워크에 따라 차이는 있지만 윈도우 창을 생성할 때 들어가야 하는 매개변수들은 대략 정해져 있습니다. 너비, 높이, 타이틀 등 인데 Default 값을 설정해 놓으면 이것들을 주지 않아도 윈도우를 생성할 수 있습니다.

함수의 원형에 Default 값을 설정하는 것은 헤더 파일에서 Default 값을 확인할 수 있게 합니다.

#include<iostream>
#include<string>
    
using std::cout;
using std::string;
using std::endl;

struct windowSize{
    int width;
    int height;
    string title;
};

void setWindow(struct windowSize *, string title, int width=640, int height=480);
void showWindow(windowSize &);

int main()
{

    windowSize myWindow;
    setWindow(&myWindow, "new Window");
    showWindow(myWindow);

    cout <<"---------------"<<endl;

    setWindow(&myWindow, "other Window", 1024, 768);
    showWindow(myWindow);

    return 0;

}

void setWindow(struct windowSize * ws, string title, int width, int height)
{
    ws->width=width;
    ws->height=height;
    ws->title=title;

    return;
}
void showWindow(windowSize &wRef)
{
    cout <<"-> title : "<<wRef.title<<endl;
    cout <<"-> width : "<<wRef.width<<endl;
    cout <<"-> height: "<<wRef.height<<endl;
}
[실행결과]
-> title : new Window
-> width : 640
-> height: 480
---------------
-> title : other Window
-> width : 1024
-> height: 768

요약

함수 매개변수 Default 값은 초기값입니다. Default 값이 있으면 반복되는 매개변수를 빼기 때문에 함수를 좀 더 편리하게 사용할 수 있습니다.

참고문서

Default arguments – cppreference.com

Leave a Comment