• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

답변을 작성해보세요.

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;
}