2010년 6월 11일 금요일

헷갈리는 const 용법 ( in Effective C++ )

전통적 Const 용법

Const char *p = greeting

비상수 포인터 , 비상수 데이터

Char * const p = greeting

상수 포인터 , 비상수 데이터


 

class에서 const

class TextBlock {

    public :

    ...

     const char & operator [] const ( std::size_t position ) const { return text[ position ] ; } // 상수 객체에 대한

     const char & operator [] ( std::size_t position ) const { return text[ position ] ; }         // 비상수 객체에 대한

    ...

}

    

비상수 멤버 호출

상수 멤버 호출

TextBlock tb("hello");

std::cout<< tb[0];

const TextBlock tb("hello");

std::cout<< tb[0];


 

여기서 파생되는 유의점

std:;size_t CTexxtBock::length () const

{    

    // 내부에서 class 변수들을 수정한다면 error

    // 왜냐하면 여기서 변수를 수정한다면 상수 멤버를 호출한 것에 대한 것과 모순이 발생

}

댓글 없음: