C++ Chapter 7.6 : 매개변수 기본 값 설정

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 7. 함수 : 매개변수 기본 값 설정

void print(int x = 0)
{
    cout << x << endl; 
}

int main()
{
    print(10);
    print(); // 오류 아님. 매개변수를 안넣어주면 인수가 디폴트 값으로 초기화되어 넘겨진다.

    return 0; 
}

void print(int x = 0)

  • 매개변수 x에 대입할 인수를 넘기지 않으면 인수 값이 0 이라고 생각하고 함수를 실행한다. 매개변수의 디폴트 값을 0으로 설정했기 때문이다. print(10)int x = 10으로 들어가지만 print()int x = 0으로 들어가게 된다.


주의할 점 1. 가장 오른쪽 매개변수는 반드시 기본값 정의가 되어 있어야 한다.

func_1(int x = 1, int y = 1, int z = 2) {} // 된다. func_1(); 로 호출 가능. 각각 1, 1, 2 로 초기화 됨
func_2(int x, int y, int z = 2) {} // 된다. func_2(3, 4); 로 호출 가능  나머지 하나 매개변수는 2로 초기화 됨
func_3(int x = 1, int y, int z) {} // ❌안된다

맨 오른쪽에 있는 z는 꼭 디폴트 값이 설정 되어있어야 한다.


주의할 점 2. 함수의 프로토타입과 바디를 따로 둘 경우

void print(int x = 10, int y = 20, int z = 30);  // prototype

void print(int x = 10, int y = 20, int z = 30)   // ❌ 이렇게 하면 안된다 ! ! 
{
    cout << x << y << z << endl;
}
  • 함수 프로토타입에서 매개변수들의 디폴트 값을 설정했다면 함수 정의 부분에선 디폴트 값을 빼주어야 한다.
  • 함수 프로토타입에만 디폴트 값들을 설정해서 헤더 파일에 따로 두는 것을 추천
void print(int x = 10, int y = 20, int z = 30);  // prototype 에 디폴트 값을 설정했으면

void print(int x, int y, int z)   // 이렇게 정의 바디 부분엔 디폴트 값을 빼야한다! 
{
    cout << x << y << z << endl;
}


주의할 점 3. 어떤 함수에 매칭 할지 헷갈리 수 있는 경우 조심

void print(int x){}
void print(int x, int y = 10){}

int main()
{
    print(10); // 에러! 두 함수 다 매칭 가능하니까 애매해서
}

print(10);void print(int x) 에도 void print(int x, int y = 10)에도 매칭이 가능하기 때문에 오류.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기