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

Ambition님의 프로필 이미지
Ambition

작성한 질문수

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

8.13 익명 객체

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

해결된 질문

작성

·

288

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

네 맞습니다.

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

Ambition님의 프로필 이미지
Ambition

작성한 질문수

질문하기