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

jsh4059님의 프로필 이미지
jsh4059

작성한 질문수

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

11.2 상속의 기본 (2)

12분 50초때쯤 질문이 있습니다

작성

·

200

0

class Student:public Person

{

private:

int m_intel

public:

Student (const std:: string&name_in ="No Name", const int &intel_in=0)

:Person(name_in),m_intel(intel_in)//여기서 오류발생

{}

}

선생님께서 여기서 오류가 나는 이유가 default constructor가 없기 때문에 생긴다 하셨는데 Student 의 생성자가 호출될때 string&name_in 여기에 "No Name" 으로 initialize 가 되고 "No Name"을 가진 변수 name_in을 Person(name_in)이런식으로Person class을 생성하면서 보내기때문에 Person class 의 생성자

Person(const std::string & name_in)

:m_name(name_in)

{}

이 생성자 만으로도 충분히 작동이 될꺼같은데 안되는 이유가 무엇인가요? Person(const std::string &name_in)이 생성자의 name_in 에 "No Name" 이 들어가서 m_name 에 "No Name"을 할당시켜주므로 default constructor 없이도 잘 작동될꺼 같은데 안되는 이유를 잘 모르겠습니다

답변 2

3

Person(name_in) 호출시 Person(const std::string & name_in) 생성자가 잘 불러와지는것 맞습니다!

질문자님 말씀이 맞아요. 저도 강의 코드 똑같이 작성해봤는데 이미 Person 에 Person(const std::string & name_in) 생성자가 정의 되어있기 때문에 Person(name_int) 호출에 아무 문제가 없었습니다.

12:30 에서 교수님의 에러메세지가 출력이 되는데 name_in 을 받을 수 있는 생성자가 없다고 나오거든요? 뭔가 해당 시간 당시에는 교수님의 Person 클래스에 Person(const std::string & name_in) 생성자가 작성 되있지 않았던건가... 하는 생각이 드네요..!! 저도 의아하네요

안그래도 동일한 강의의 다른 질문에 12:30에 ide 가 순간적으로 잘 못 판단한거 같다고 문의 남겨주신 수강생님 계시네요! 

0

저도 이해가 안 가는 부분이었는데 이미 질문이 있었군요 ㅠㅠ 감사합니다.

jsh4059님의 프로필 이미지
jsh4059

작성한 질문수

질문하기