inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

9.1 산술 연산자 오버로딩 하기

[1:55] int getCents() vs int& getCents() 문의

257

Hyungjune Choi

작성한 질문수 18

1

핵심부분만 발췌해서 적으면,
 
[1]
int getCents() const
{ return m_cents;}
 
[2]
int& getCents()
{ return m_cents;}
 
[3]
void operator + (const Cents& c1, const Cents& c2)
{ cout << c1.getCents() + c2.getCents(); }
 
[4]
int main()
{ cout << cents1.getCents() << endl;}
 
-------------------------------
기본이해된부분 -이해가 맞을까요?)
① [1] 은 객체가 const로 생성되었을시 const가 붙은 멤버함수만 사용할 수 있고, [3]은 매개변수로 const 객체 c1을 받아들였으므로 [1]의 함수를 호출.
 
② [2] 의 함수는 일반 객체가 들어왔을시 호출되며 m_cents의 참조를 반환, 따라서 [4]의 cents1.getCents()의 주소는 동일함.
 
-------------------------------
 
질문 1.
[3]의 기본연산자에서 굳이 매개변수로 const를 뭐하러 받나요 ? 제가알기로 함수의 매개변수로 const참조를 쓰는 가장큰이유는 r-value도 참조할 수 있기 때문인데, 이경우에는 클래스 객체를 받아오므로 상수일 일도 없지않나요? const 매개변수를 쓰지않으면 더이상 [1]의 const 멤버함수도 필요 없지 않나요??(정말.. 오래 고민하다 해결되지 않아 적어서 ㅠㅠ 조금만 자세히 설명해주시면 정말 감사해요 ㅠㅠ)
위 코드에서 const를 쓰지않으면 생기는 문제를 조금만 자세히 적어주시면 정말 감사합니다

C++

답변 1

0

강민철

음..

[1]의 경우, const 멤버 함수는

멤버 변수의 값을 수정하지 않겠다는 의미로 사용하는 것이 더 큽니다.

m_cents의 값을 변경하지 않겠다는 의미이지요.

 

아마 다른 용도로 사용되는 const와 헷갈리신 것이 아닌가 생각해봅니다.

0

Hyungjune Choi

음.. const의 의미가 총 두가지로 배웠는데 조금더 공부해볼게요!

그런데 질문1. 의 답변도 해주실수 없으실까요? 그냥 const삭제해버리면

아래 [2]함수 하나로 모든걸 다 처리할수 있는데 왜 굳이 [1]을 추가한건가요?

결국 [2] 안에서도 m_cents 값 바꿀수있으니 [1]은 의미가 없다고봐야하는거 아닌가요?

[2]

int& getCents()
{ return m_cents;}

변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠

1

483

1

메모리 주소 10진수로 출력

1

674

1

클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.

1

520

1

여러가지 리턴 타입에 관한 강의가 어떤 걸까요?

1

550

1

메모리 주소에 관한 질분

0

690

1

인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.

0

558

1

형변환 오버로딩에서 const 관련 질문이 있습니다.

0

451

1

Digit 뒤에 reference를 사용하는 이유

0

517

1

4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결

0

332

1

dat파일이...

0

544

1

TODO:대입 연산자 오버로딩에 대한 소스코드입니다.

0

654

1

복사 생성자 관련 질문이 있습니다.

0

459

1

수업 중 궁금한점이 있습니다.

1

395

1

라이브러리자체가 이해가 되지 않습니다.

0

571

1

마지막 예제 질문

0

308

1

증감연산자 위치에 따른 수행 순서 질문입니다.

0

384

1

단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.

1

421

1

friend함수 관련 질문이 있습니다.

0

317

1

operator+ 정의부분에서 궁금한 것이 있습니다.

0

453

1

3분 17초 질문

0

358

1

함수에 값을 대입한다는 개념이 이해가 되지 않습니다.

0

454

1

int getvalue() const에서 const는 왜 뒤에 붙는건가요?

0

457

2

const Something &st에서 const를 빼면 안되나요?

0

307

1

friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??

1

499

1