강의

멘토링

커뮤니티

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

jsh4059님의 프로필 이미지
jsh4059

작성한 질문수

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

8.3 생성자 Constructors

16분 17초쯤에 질문이 있습니다

작성

·

184

0

선생님께서 Fraction one_thirds=Fraction{1,3}; 이 경우는 복사한 instance 가 one_thirds 로 들어가 초기화를 해주신다고 하셨는데 instance 가 만들어지기 위해선 변수명을 지정해주어야하는거 아닌가요? 예를들어 Fraction one_thirds=Fraction a{1,3}; 이런식으로 해야지 복사된 instance 가 one_thirds class 에들어가서 초기화가 되는거 아닌가요?

답변 1

3

이건 추후에 들으실  <8.13 익명객체> 강의를 듣게 되시면 이해 되실거라 생각됩니다. 

Fraction one_thirds=Fraction{1,3};  여기서 Fraction{1,3} 가 바로 익명 객체거든요! 변수명 없이 만들어지는 객체를 의미합니다.

우리가 사용하는 123, 23 이런 리터럴들은 우리가 내용을 수정할 수도 없고 메모리 주소를 알아낼 수도 없죠? 이름도 없구요! 이러한 인스턴스들을 R-value 라고 합니다. 익명객체도 이런 R-value 중 하나에요. 한번 쓰고 말아버리는 그런 이름없는 1회용 인스턴스라고 생각하시면 됩니다.

Fraction one_thirds=Fraction a{1,3};  참고로 이건 문법에서 어긋나요..! 

Fraction a{1,3};

Fraction one_thirds = a;  

이렇게 나눠주셔야 합니다. Fraction a{1,3}; 라는 선언 식을 대입할 순 없습니다.

jsh4059님의 프로필 이미지
jsh4059

작성한 질문수

질문하기