왜 static 멤버 함수에는 const를 붙일 수 없을까?
2012. 2. 6. 08:00 |
Programming
C++에서는 멤버 함수에 const 키워드를 사용할 수 있다. 이는 메서드 내에서 멤버 변수들의 값을 바꾸지 않겠다는 약속이다.
그래서 질문에 대한 답은 '아무런 의미가 없는 짓이기 때문' 이라고 할 수 있겠다.
void Clazz::foo() const
{
}
위의 const 변경자는 해당 인스턴스의 this 포인터에 영향을 끼치게 된다. 즉 멤버 함수 내에서 this 포인터의 타입은 const Clazz* 가 된다. 그러므로 해당 멤버 함수 내에서 멤버 변수의 값을 바꾸려고 하면 컴파일 에러가 발생한다.{
}
static void Clazz::boo() const
{
}
하지만 static 멤버 함수에 대해 const를 붙일 경우에는 컴파일 에러가 발생한다. 그 이유는 static 멤버 함수는 this 포인터를 가지고 있지 않기 때문이다. this가 없는데 어떻게 this를 const로 만들겠는가.{
}
그래서 질문에 대한 답은 '아무런 의미가 없는 짓이기 때문' 이라고 할 수 있겠다.
'Programming' 카테고리의 다른 글
메인 쓰레드가 종료되면 프로세스도 종료되는 것 아닌가요? (0) | 2012.03.26 |
---|---|
어떻게 함수의 undecorated name을 추측 할 수 있을까? (3) | 2012.02.12 |
왜 static 멤버 함수에는 const를 붙일 수 없을까? (0) | 2012.02.06 |
SetFilePointer 보다는 SetFilePointerEx를 사용해야 한다 (1) | 2012.01.16 |
GetLastError 함수 사용의 흔한 실수 (0) | 2012.01.13 |
NTFS에서 Sparse 파일을 만들기 (3) | 2012.01.03 |