const 이해

const는 위치에 따라서 다른 의미를 가진다.

1) char* const a

아래처럼 데이터는 수정 가능, 가리키는 포인터는 수정할 수 없다.
즉, 포인터 a를 상수화 한다.

    char* const a = new char[3];

    a[0] = 'b'; //가능

    a = "bbb"//오류

 

2) const char* a

아래처럼 가리키는 포인터의 데이터는 수정 할 수 없지만, 가리키는 포인터는 수정 가능하다.
즉, 가리키는 포인터 a의 데이터를 상수화 한다.

    const char* a = "aaa";

    a[0] = 'b'; //오류

    a = "bbb"//가능

 

3) const Object& CDoc::Update( )

리턴받는 객체 Object를 상수화 한다.

 

4) Object& CDoc::Update( ) const

메쏘드를 처리하는 동안 자신의 객체를 상수화 한다.
이와 같이 메소드 뒤에 const를 사용하는 경우에 STL의 반복자를 사용 할 때는 const_iterator를 사용해야 정상적으로 빌드가 된다.

    MyManagerVector::iterator it = m_managers.begin(); //오류

 

    MyManagerVector::const_iterator it = m_managers.begin(); //가능