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

lll님의 프로필 이미지
lll

작성한 질문수

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

11.2 상속의 기본 (2)

강의내용중 질문이 있습니다.

작성

·

207

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

1. 클래스의 멤버함수 정의 할 때 인스턴스의 이름을 출력하게 하는 방법이 있는지 궁금합니다. 예를 들어서 Student s1; 을 정의하고 나서 s1.function(); 을 수행하면 "s1" 처럼 인스턴스의 이름을 출력하게 하는 기능이 있는지 궁금합니다.

2. string getName() { return m_name;} 을 수행할 때 const를 붙이지 않으면 안되는 이유가 궁금합니다.

(string getName() const 라고 해야만 되는 이유)

3. 출력 연산자 오버라이딩 할때 friend ostream & ... 에서도 마찬가지로 '&' 를 붙이지 않으면 기능하지 않는 이유에 대해서도 궁금합니다

감사합니다

답변 2

1

2번 질문 관련해서 지식 공유하고 싶어서 글 남겨요~

함수의 파라미터에서 const Teacher& teacher 로 객체가 선언되므로

const객체는 const 함수만 사용할수있어서 getname함수에 const를 붙여줘야해요.

아니면 const Teacher& teacher 에서 const 를 빼주면 getname 함수가const가 아니여도 사용할수있더라고요

0

1. C++ 은 그런 기능이 따로 없습니다. (여담으로 C# 엔 있습니다.ㅎㅎ) 사용하고싶다면 전처리기 매크로로 직접 기능을 만들어 사용해야 한다고 하네요! http://www.cplusplus.com/forum/beginner/11252/

2. 이건 앞에서 배우셨을 <8.9 클래스와 const> 강의에서 나오는 부분인데 const 객체는 뒤에 const 가 붙은 함수만 호출할 수 있습니다. operator << 부분에서 const 객체 참조 매개변수에서 getName 을 호출할 것이기 떄문에 const 가 붙은 getName 을 만들어준 것입니다.

3. 이 부분도 <7.3 다양한 리턴값> 에서 배운 내용으로 알 수 있는 부분입니다. operator << 에서 사용한 out 원본 그 자체를 리턴해야하기 때문에 참조로 리턴해야하는 것입니다. & 를 붙이지않으면 R-value 사본으로서 리턴합니다. 해당 강의를 다시 들어보시면 이해하실 수 있을 것입니다.

(여담으로 질문 주실 때 해당 질문이 비롯된 강의 시간대도 구체적으로 알려주시면 제가 답변드릴 때 도움이 됩니다 :) 어떤 부분에서 2,3 질문을 주신 것인지 제가 강의에서 다 찾아봐야 하거든요! 감사합니다.)

lll님의 프로필 이미지
lll

작성한 질문수

질문하기