본문 바로가기

개발

__cplusplus_3

멤버함수에 붙는 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]);
    }
    ...
};

반응형

'개발' 카테고리의 다른 글

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