* 증가, 감소 연산자의 오버로딩
Point & operator++() {
xpos += 1;
ypos += 1;
return * this; // 나 자신을 리턴하는 것
}
++(++pos)의 경우
c 언어에서는 에러가 난다
++pos의 결과가 상수이므로
그러나 c++에서는 가능하다
상수를 리턴하는 것이 아니라 pos 객체를 리턴하므로
* 전위 증가와 후위 증가의 구분
전위 증가 ++pos는
const pos.operator++();로
후위 증가 pos++는
const pos.operator++(int);로
* 반환형에서의 const
const 객체는 멤버변수의 변경이 ㅂㄱㄴ
const 객체는 const 참조자로만 참조 ㄱㄴ
const 객체를 대상으로는
const 함수만 호출 가능
반환형이 const라는 의미는
반환되는 객체를 const 객체화 시키겠다는 것
이러한 const 반환형의 특징을 이용하여
(pos++)++ 같은 것을 막을 수 있다
const 반환형을 안 쓰면 (pos++)++ 가능
* 스마트 포인터 Smart Pointer
포인터보다 똑똑하게 동작하는 객체
똑똑한 포인터