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

김범준님의 프로필 이미지

작성한 질문수

[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문

this 포인터, 클래스 객체 배열

func에서 Stock의 정의

작성

·

257

1

Stock Stock::topval(Stock& s) { if (s.share_val > share_val) return s; else return *this;
 
여기서 맨 앞의 Stock은 stock이라는 이름의 class에서 함수를 불러왔다는 뜻이고
 
두번쨰 Stock은 데이터형으로써 정의되는 객체의 stock이고
 
나머지 세번쨰는 매개변수로써 사용되는 Stock데이터형의 객체로 이해해도 될까요?

답변 2

1

판다코딩님의 프로필 이미지
판다코딩
지식공유자

죄송합니다. 새로운 강의 오픈 준비로 답변이 많이 늦었습니다.

-

보다 엄밀히 말씀드리자면,

첫번째 Stock은 사용자 정의 데이터형의 이름이고,

두번째 Stock은 클래스 객체 맴버함수를 위한 이름이겠지만

세번째 Stock을 포함하여 사용하고자 하는 목적은 질문자님이 말씀해주신 바와 일치합니다~

0

첫번째 Stock은 함수의 반환형으로 알고있는데.. 잘못 알고 있는걸까요 ? 사실 참조를 반환한다는 부분이 잘 이해가 안가는 것 같습니다 ㅠㅠ

Stock& Stock::topval(Stock& s){
    if (s.share_val > share_val)
        return s;
    else return *this;
}
 
여기서 topval의 인자로 받은 객체를 s라는 이름으로
참조하고 if를 만족하면 s를 return한다고 되어있는데
s는 함수가 끝나면 소멸되는 것으로 알고있는데 ,
Stock& 으로 반환을 하는 동작을 잘 모르겠습니다. ㅠㅠ
또한 참조를 반환하는데 두번째 *this처럼 주소값을
return하는거도 이해가 잘 안가는 것같습니다...
추가 설명 해주시면 정말 감사하겠습니다.