이유
1. 의미적으로 상수로 표현하기보단 실질적으로 상수로 표현하는 const가 더 안정적이기 때문이다.
(함수 내부에서 값을 건드리지 않는다는 의미만 가지고 코딩할게 아니라 진짜로 표현하는게 더 좋기 때문이다)

주의점
1. 함수의 반환값 함수의 매개변수, 함수의 정의 구역을 모두 const로 할수 있는지 생각해 보아야 한다.
2. 상수객체와 비상수객체는 함수의 오버로딩 대상에 포함된다.
- 즉 상수객체만 받거나 비상수객체만 받거나 둘의 차이를 인정한다는 것이다.
3. 상수 멤버 함수의 반환값이 참조자라면, 상수형 참조자를 반환할수 있게 만들어야 한다.
- 왜냐하면 기본제공 타입을 반환하는 함수의 반환값 수정은 공통적으로 안되는 규칙을 따르기 위함이다.

참조
const에 "상수형" 이라는 말을 붙여버려서 그 오른편에 무엇이 오는지만 알면 무엇이 상수인지 알수 있다.

세부 내용

개인적인 생각
상수 멤버 함수를 완벽(?)하게 지원하지 않는 한, 의미적으로 상수성을 생각해 보는게 더 좋을것이라고 생각된다.(스트레스를 줄여 주니까..)

추가적으로
1. 코드 중복을 막는 방법은 중복될 함수를 호출하여, 다른 함수를 구현하는 것이다.
예)상수 멤버 함수를 호출하여 비상수 멤버 함수를 구현한다.

이것만은 잊지 말자!
1. const를 붙일 건덕지가 있으면 붙여야 한다.
2. 개념적인 상수성을 사용해서 프로그래밍 해야 한다.(개인적인 생각 참조)
3. 상수 멤버 함수와 비상수 멤버 함수가 동일하다면 상수멤버를 비상수 멤버에서 호출한다.(추가적으로 참조)


관련링크
http://ikpil.tistory.com/312
http://chunsinn.egloos.com/1071274
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요