[디딤돌 C++] 7. 매개 변수 이름이 없는 스텁 매개 변수

C++에서 함수 중복 정의가 가능한 것은 이미 앞에서 다뤘어요.

C++에서는 입력 인자로 전달 받아야 할 형식 인자가 같은 두 개의 함수의 이름을 중복 정의할 수 없을 때 두 개의 함수를 구분하기 위한 목적으로 스텁 매개 변수를 정할 수 있어요. 스텁 매개 변수는 입력 매개 변수 형식은 결정하였지만 변수 이름이 없는 매개 변수예요. 단순히 호출하는 곳에서 어느 함수를 호출하는 것인지 구분하기 위한 목적으로 사용하는 것이예요.

예를 들어 사각형의 면적을 구하는 함수와 삼각형의 면적을 구하는 함수를 만든다고 가정해요. 이 때 두 개의 함수는 모두 두 개의 실수를 인자를 받으면 면적을 구할 수 있을 거예요. 하지만 중복 정의할 수 없겠죠. 이 때 두 함수 중에 하나의 함수는 스텁 매개 변수를 정의하면 함수 중복 정의할 수 있어요.

int CalculateArea(int width,int height)
{
    return width*height;
}

int CalculateArea(int width,int height,bool) //세 번째 인자를 스텁 매개 변수로 결정
{
    return width*height/2;
}

물론 호출하는 곳에서는 스텁 매개 변수에도 값을 전달해야 합니다. 그리고 스텁 매개 변수로 전달한 값은 단지 어느 함수를 호출하기 위한 것인지 판별하기 위한 것으로 실제 함수 내에서는 전달받은 값을 사용할 수는 없어요.

//스텁 매개 변수
//Program.cpp

#include <iostream>
using namespace std;

int CalculateArea(int width,int height)
{
    return width*height;
}
int CalculateArea(int width,int height,bool) //세 번째 인자를 스텁 매개 변수로 결정
{
    return width*height/2;
}
 
int main()
{
    cout<<"사각형 넓이:";
    cout<<CalculateArea(3,4)<<endl;
    cout<<"삼각형 넓이:";
    cout<<CalculateArea(3,4,false)<<endl;//스텁 매개 변수에 인자를 전달
    return 0;
}

▷ 실행 결과

사각형 넓이:12
삼각형 넓이:6