• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

익명 객체에서 생성자와 getCents함수에 대해 궁금한 점이 있습니다.

23.02.06 18:06 작성 조회수 220

0

#include <iostream>
using namespace std;

class Cents
{
private:
	int cents_;

public:
	Cents(const int& cents) : cents_(cents)
	{
		cout << "Constructor" << endl;
	}

	const int& getCents() const//뒤에 const를 붙여준 이유는 함수 오버로딩
	{
		return cents_;
	}
};

Cents add(const Cents& c1, const Cents& c2)
{
	return Cents(c1.getCents() + c2.getCents());//Cents 생성자 호출
}

int main()
{
	cout << add(Cents(6), Cents(8)).getCents()<< endl; //인자로 하는 생성자 각각 호출
	return 0;
}

교수님께서는 getCents함수에서 반환형에서 참조자를 붙이지 않고 뒤에 const만 붙였는데요. 이러면 return by value가 되서 복사된 값을 반환하는 것이 아닌가요? 멤버변수 그 자체를 반환하고 값이 변경되는 것을 방지하기 위해서는 반환형에 const int&를 붙여야 하지 않나요??

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2023.02.07

네 맞습니다.

레퍼런스를 반환하기 위해 const int&를 붙이는 것이 옳아 보입니다.