-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
9.1 산술 연산자 오버로딩
22.09.14 19:15 작성 조회수 248
1
안녕하세요, 양질의 강의에 감사하며 수강하고 있습니다.
강의 1:40쯤 getCents()함수를 2개 만드는데요,
int getCents() const { return m_cents; }
int& getCents() { return m_cents; }
아래 참조형 반환 함수는 왜 만든 건가요?
이번 강의를 끝까지 봤는데도 어떤 용도로 사용되었는지 잘 모르겠습니다.
(강의에 따르면 <클래스 외부 함수에서 클래스의 private멤버 변수에 접근하기 위한 방법>을 생각하면서 나온 듯한데.. 잘 모르겠습니다.)
답변을 작성해보세요.
1
강민철
2022.09.15
안녕하세요
아래 코드를 실행하기 위해 참조형을 반환해야 하는데,
c_out.getCents() = c1.getCents() + c2.getCents();
그냥 반환값을 int &로만 바꾸면 const 함수로 인자를 받았기에
그냥 새롭게 getCents함수를 만들어내신 것으로 보입니다.
굳이 새로 함수를 만들지 않아도 아래와 같이 수정해도 잘 동작합니다.
#include <iostream>
using namespace std;
class Cents
{
private:
int m_cents;
public:
Cents(int cents = 0)
{
m_cents = cents;
}
int& getCents()
{
return m_cents;
}
};
void add(Cents &c1, Cents &c2, Cents &c_out)
{
c_out.getCents() = c1.getCents() + c2.getCents();
}
int main()
{
Cents cents1(6);
Cents cents2(8);
Cents sum;
add(cents1, cents2, sum);
cout << sum.getCents() << endl;
return 0;
}
답변 1