해결된 질문
작성
·
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&를 붙여야 하지 않나요??