멤버함수 뒤 const
글쓴이: rasungboy / 작성시간: 월, 2004/10/04 - 11:10오전
저는 멤버함수에 const 를 붙여주면
그 멤버함수는 멤버 데이타를 변경하지 않는다 라는걸 나타내는것 이라는것
외에는 다른뜻은 몰랐는데... 오늘 이런 현상을 체험햇씁니당
class Buffer{}; class a { public: Buffer* GetBuffer(); private: Buffer* m_Buffer; }; class b : public a { void DoSomething() const; }; void b::DoSomething() const { GetBuffer(); }
이렇게 DoSomething() 에 const를 붙이고
부모의 퍼블릭 메소드를 호출했는데 에러가 나더군요.
컴파일 에러가 납니다.
에러메세지는 대략
cannot convert 'this' pointer from 'const b' to 'a&'
입니다.
단순히 const 가 멤버변경을 못하게 한다는것만 알고 잇었는데
뭐가 문제인지 궁금합니다
Forums:
const 멤버 함수 안에서는 const가 아닌 멤버함수를 호출할 수 없
const 멤버 함수 안에서는 const가 아닌 멤버함수를 호출할 수 없습니다.
const가 아닌 멤버함수안에서 멤버변수를 수정할 수 있기 때문입니다.
멤버함수 선언 끝에 붙는 const는 this 포인터를 통해 개체를 변경
멤버함수 선언 끝에 붙는 const는 this 포인터를 통해 개체를 변경할 수
없다는 뜻입니다. 그런데 b::DoSomething() const 내부에서 (개체가 변경
가능한) GetBuffer()를 호출했기 때문에 나는 에러입니다.
Buffer* a::GetBuffer() const;
로 선언하세요.
댓글 달기