강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Jason Hong님의 프로필 이미지
Jason Hong

작성한 질문수

홍정모의 따라하며 배우는 C++

8.5 위임 생성자

위임 생성자의 필요성 + 추가 질문

작성

·

225

2

안녕하세요 교수님

위임 생성자가 아래와 같이 쓰인다고 강의에서 설명해주셨는데요, (1번 코드). 제 생각에는 이전 강의에서 배운것처럼 2번 식으로 디폴트 값을 넣어서 하는것도 괜찮을 것 같은데, 굳이 위임 생성자를 써야하는 이유가 있나요?

1.

public:
Student(const string& name_in)
: Student(0, name_in)
{
}

Student(const int& id_in, const string& name_in)
: m_id (id_in), m_name(name_in)
{
}


void print()
{
cout << m_id << " " << m_name << endl;
}
};.

2.

public:

Student(const int& id_in=0, const string& name_in)
: m_id (id_in), m_name(name_in)
{
}


void print()
{
cout << m_id << " " << m_name << endl;
}
};

추가로 1분20초 정도에서 default값은 오른쪽 파라미터부터 써야된다고 하셨는데. 제가 예전에 들어서 그런지 기억이 나지 않습니다. 어떤 강의를 제가 다시 체크해보면 될까요?

감사합니다

답변 1

6

홍정모님의 프로필 이미지
홍정모
지식공유자

예전에는 기본값 기능이 없어서 모든 매개변수 조합에 대해서 위임 생성자를 구현했었습니다.

2번처럼 기본값을 이용해서 구현에 드는 노력을 줄이셔도 됩니다. 다만, 올려주신 2번 구현을 보면 기본값 순서 때문에 문제가 생길 것 같네요.

기본값 얘기가 처음 나온 강의는 '7.8 매개변수와 기본값'일 것 같습니다. 

참고로  파이썬 같은 비교적 최신 언어는 기본값 순서에 대한 제약이 사라졌습니다.  자세한 내용은 파이썬 문법을 참고하세요.

Jason Hong님의 프로필 이미지
Jason Hong

작성한 질문수

질문하기