이유
1. 의미적으로 상수로 표현하기보단 실질적으로 상수로 표현하는 const가 더 안정적이기 때문이다.
(함수 내부에서 값을 건드리지 않는다는 의미만 가지고 코딩할게 아니라 진짜로 표현하는게 더 좋기 때문이다)
주의점
1. 함수의 반환값 함수의 매개변수, 함수의 정의 구역을 모두 const로 할수 있는지 생각해 보아야 한다.
2. 상수객체와 비상수객체는 함수의 오버로딩 대상에 포함된다.
- 즉 상수객체만 받거나 비상수객체만 받거나 둘의 차이를 인정한다는 것이다.
3. 상수 멤버 함수의 반환값이 참조자라면, 상수형 참조자를 반환할수 있게 만들어야 한다.
- 왜냐하면 기본제공 타입을 반환하는 함수의 반환값 수정은 공통적으로 안되는 규칙을 따르기 위함이다.
참조
const에 "상수형" 이라는 말을 붙여버려서 그 오른편에 무엇이 오는지만 알면 무엇이 상수인지 알수 있다.
세부 내용
개인적인 생각
상수 멤버 함수를 완벽(?)하게 지원하지 않는 한, 의미적으로 상수성을 생각해 보는게 더 좋을것이라고 생각된다.(스트레스를 줄여 주니까..)
추가적으로
1. 코드 중복을 막는 방법은 중복될 함수를 호출하여, 다른 함수를 구현하는 것이다.
예)상수 멤버 함수를 호출하여 비상수 멤버 함수를 구현한다.
이것만은 잊지 말자!
1. const를 붙일 건덕지가 있으면 붙여야 한다.
2. 개념적인 상수성을 사용해서 프로그래밍 해야 한다.(개인적인 생각 참조)
3. 상수 멤버 함수와 비상수 멤버 함수가 동일하다면 상수멤버를 비상수 멤버에서 호출한다.(추가적으로 참조)
관련링크
http://ikpil.tistory.com/312
http://chunsinn.egloos.com/1071274
1. 의미적으로 상수로 표현하기보단 실질적으로 상수로 표현하는 const가 더 안정적이기 때문이다.
(함수 내부에서 값을 건드리지 않는다는 의미만 가지고 코딩할게 아니라 진짜로 표현하는게 더 좋기 때문이다)
주의점
1. 함수의 반환값 함수의 매개변수, 함수의 정의 구역을 모두 const로 할수 있는지 생각해 보아야 한다.
2. 상수객체와 비상수객체는 함수의 오버로딩 대상에 포함된다.
- 즉 상수객체만 받거나 비상수객체만 받거나 둘의 차이를 인정한다는 것이다.
3. 상수 멤버 함수의 반환값이 참조자라면, 상수형 참조자를 반환할수 있게 만들어야 한다.
- 왜냐하면 기본제공 타입을 반환하는 함수의 반환값 수정은 공통적으로 안되는 규칙을 따르기 위함이다.
참조
const에 "상수형" 이라는 말을 붙여버려서 그 오른편에 무엇이 오는지만 알면 무엇이 상수인지 알수 있다.
세부 내용
개인적인 생각
상수 멤버 함수를 완벽(?)하게 지원하지 않는 한, 의미적으로 상수성을 생각해 보는게 더 좋을것이라고 생각된다.(스트레스를 줄여 주니까..)
추가적으로
1. 코드 중복을 막는 방법은 중복될 함수를 호출하여, 다른 함수를 구현하는 것이다.
예)상수 멤버 함수를 호출하여 비상수 멤버 함수를 구현한다.
이것만은 잊지 말자!
1. const를 붙일 건덕지가 있으면 붙여야 한다.
2. 개념적인 상수성을 사용해서 프로그래밍 해야 한다.(개인적인 생각 참조)
3. 상수 멤버 함수와 비상수 멤버 함수가 동일하다면 상수멤버를 비상수 멤버에서 호출한다.(추가적으로 참조)
관련링크
http://ikpil.tistory.com/312
http://chunsinn.egloos.com/1071274
'책 정리 > Effective C++ 3판' 카테고리의 다른 글
항목 9: 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2008.05.31 |
---|---|
항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자. (0) | 2008.05.31 |
항목 7: 다향성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2008.05.31 |
항목 6: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 (0) | 2008.05.31 |
항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자. (0) | 2008.05.31 |
항목 4: 객체를 사용하기 전에 반드시 그 객체를 초기화하자. (0) | 2008.05.31 |
항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자. (0) | 2008.05.29 |
항목 1. C++를 언어들의 연합체로 바라보는 안목은 필수 (0) | 2008.05.29 |
Effective C++ 3판을 공부하기에 앞서... (0) | 2008.05.29 |
Effective C++ 3판 3rd 목차 및 링크 (3) | 2008.05.29 |
최근댓글