멤버함수에 붙는 const 키워드의 역할
- 해당 멤버 함수가 상수 객체에 대해 호출될 함수이다.라는 사실을 알려줌.
상수 멤버 함수가 중요한 이유
1. 클래스의 인터페이스를 이해하기 좋게 하기 위해서.
2. 상수 객체를 사용할 수 있게 하자는 취지.
const 키워드가 있고 없고의 차이만 있는 멤버 함수들은 오버로딩이 가능.
상수 멤버 함수의 의미
1. 물리적 상수성[physical constness] 혹은 비트수준 상수성 [bitwise constness]
- 어떤 멤버 함수가 그 객체의 어떤 데이터 멤버도 건드리지 않아야 한다.
단, 정적 멤버는 제외.
2. 논리적 상수성[logical constness]
- 일부 몇 비트 정도는 바꿀 수 있되, 그것을 사용자측에서 알아채지 못하게만 하면
상수 멤버 자격이 있다.
참고 키워드)
mutable : 비정적 데이터 멤버의 비트 수준 상수성을 해제 시킴.
데이터 멤버 선언 시 mutable을 붙여주면 상수 멤버 함수안에서도 수정 가능.
상수, 비상수 메소드의 코드 중복 현상을 피하는 방법.
- 비상수 메소드가 상수 메소드 호출하도록 구현.
ex)
class CTest
{
const char& operator [](int position) const //상수
{
....
}
char& operator [](int position)
{
return const_cast <char &> (static_cast <const CTest&> (*this) [position]);
}
...
};

- 해당 멤버 함수가 상수 객체에 대해 호출될 함수이다.라는 사실을 알려줌.
상수 멤버 함수가 중요한 이유
1. 클래스의 인터페이스를 이해하기 좋게 하기 위해서.
2. 상수 객체를 사용할 수 있게 하자는 취지.
const 키워드가 있고 없고의 차이만 있는 멤버 함수들은 오버로딩이 가능.
상수 멤버 함수의 의미
1. 물리적 상수성[physical constness] 혹은 비트수준 상수성 [bitwise constness]
- 어떤 멤버 함수가 그 객체의 어떤 데이터 멤버도 건드리지 않아야 한다.
단, 정적 멤버는 제외.
2. 논리적 상수성[logical constness]
- 일부 몇 비트 정도는 바꿀 수 있되, 그것을 사용자측에서 알아채지 못하게만 하면
상수 멤버 자격이 있다.
참고 키워드)
mutable : 비정적 데이터 멤버의 비트 수준 상수성을 해제 시킴.
데이터 멤버 선언 시 mutable을 붙여주면 상수 멤버 함수안에서도 수정 가능.
상수, 비상수 메소드의 코드 중복 현상을 피하는 방법.
- 비상수 메소드가 상수 메소드 호출하도록 구현.
ex)
class CTest
{
const char& operator [](int position) const //상수
{
....
}
char& operator [](int position)
{
return const_cast <char &> (static_cast <const CTest&> (*this) [position]);
}
...
};

반응형
'개발' 카테고리의 다른 글
C 에서 C++ 메소드 호출 하기~ (0) | 2009.08.04 |
---|---|
선점형 & 비 선점형 에 대한 메모 (0) | 2009.08.01 |
__cplusplus_2 (0) | 2009.07.23 |
__cplusplus_1 (0) | 2009.07.21 |
win32프로그래밍 시 console window 생성하기. (0) | 2009.03.26 |