operator overloading 시 반환값에 const가 붙는이유
글쓴이: jhugestar / 작성시간: 금, 2005/07/29 - 2:29오후
more effective c++을 보고있는 중에 질문이 생겨 올립니다.
++ 연산자의 경우는
const Rational Rational::operator++(Rational);
와같이 리턴값이 const의 형태이고 이것은
i++++; 와 같은것을 방지하기 위함이라고 나와있습니다만
책을 보다보면
const Rational operator+(const Rational& lhs, const Rational& rhs);
와같은 함수가 나오고 이때 리턴값이 const인 이유는 위의 경우와 같은 이유라는 식의 설명이 나오는데요.
이와 같이 연산을 위한 인수가 두개일대는 왜 리턴 값이 const 가 되어야 하나요? 어떤 특별한 경우를 위해서인지....
필요성을 잘모르겠습니다.
답변 부탁드립니다.
Forums:
더하기 여러번 할때를 생각해보면 되지 않을까요? 8)a + b 만
더하기 여러번 할때를 생각해보면 되지 않을까요? 8)
a + b 만 쓰면 리턴이 const가 아니어도 될듯하고...
a + b + c + d 라면... ^^;;
int와 똑같은 방식으로 쓰일 수 있도록 하기 위해서죠. 만약 const
int와 똑같은 방식으로 쓰일 수 있도록 하기 위해서죠. 만약 const가 아니라면
이런 기묘한(그러나 아무런 side effect도 없는) 문장도 컴파일이 되겠죠.
이런 것을 막기 위해서입니다.
operator+()의 인자가 const 참조형이므로 반환형이 const냐 non-const냐에
관계없이 a + b + c + d은 허용됩니다.
댓글 달기