[C++] 매개변수의 디폴트 값

서희찬·2021년 4월 28일
0
post-thumbnail

C++에서는 "디폴트 값"이라는 것을 설정할 수 있다.
"디폴트 값" 이란 "기본적으로 설정되어 있는 값"을 의미한다.

매개변수에 설정하는 "디폴트 값"의 의미


이와 같이 인자를 전달받지 않으면 출력해줄 기본적으로 설정되어 있는 값을 인자에 써주는것이다.

예제를 통해 이를 확인해보자 .

#include <iostream>


int Adder(int num1 = 1, int num2 = 2)
{
    return num1 + num2;
}

int main(void)
{
    std::cout<<Adder()<<std::endl;
    std::cout<<Adder(2)<<std::endl;
    std::cout<<Adder(3,5)<<std::endl;
    
    return 0;
}

이를 통해서 다음과 같은 사실도 알수있다.

"매개변수에 디폴트 값이 설정되어 있으면, 선언된 매개변수의 수보다 적은 수의 인자전달이 가능하다. 그리고 전달된 인자는 왼쪽에서부터 채워져 나가고, 부족분은 디폴트 값으로 채워진다."

디폴트 값은 함수의 선언 부분에만 표현하면 됩니다.

#include <iostream>

int Adder(int num1=1,int num2=2);

int main(void)
{
    std::cout<<Adder()<<std::endl;
    std::cout<<Adder(2)<<std::endl;
    std::cout<<Adder(3,5)<<std::endl;
    
    return 0;
}
int Adder(int num1 , int num2)
{
    return num1 + num2;
}

이렇듯 함수의 선언 부분에만 디폴트 값을 표현하고 정의부분에서는 표현하면 안된다.

만약 선언부분에 디폴트 값이 위치하지 않는디면 main의 첫번째와 두번째 줄이 실행 가능하겠는가?

부분적 디폴트 값 설정

이렇듯 디폴트 값을 부분적으로 줄수있지만 !!

무조건 오른쪽에서부터 줘야한다.

그 이유는 YourFunc(10,20)이 메인 함수에
int YourFunc(int num1=1,int num2,int num3);라는 함수가 있다고 생각해보자.
함수에 전달되는 인자가 왼쪽에서부터 오른쪽으로 채워지니 num3는 아무 인자도 전달 받지 못할것 아닌가!?
그러므로 오른쪽에서부터 채워야한다.

그럼 다음 예제를 보고
디폴트 값 지정을 끝 마치자!

#include <iostream>
int BoxVloume(int length,int width =1 ,int height = 1);

int main(void)
{
    std::cout<<"[3, 3, 3] : "<<BoxVloume(3,3,3)<<std::endl;
    std::cout<<"[5, 5, D] : "<<BoxVloume(5,5)<<std::endl;
    std::cout<<"[7, D, D] : "<<BoxVloume(7)<<std::endl;
    //std::cout<<"[D, D, D] : "<<BoxVloume()<<std::endl; 에러 !!
    
    
    
    return 0;
}

int BoxVloume(int length,int width ,int height)
{
    return length*width*height;
};

profile
Carnegie Mellon University Robotics Institute | Research Associate | Developing For Our Lives, 세상에 기여하는 삶을 살고자 개발하고 있습니다

0개의 댓글

관련 채용 정보