const 멤버 함수의 종류, const 함수내에서 수정가능한 경우
멤버함수에 붙는 const 키워드 역활은 해당 멤버함수가 상수 객체에 대해 호출될 함수이다 라는 사실을 알려 주는 것이다.
이런 함수가 중요한 이유는?
1. 클래스의 인터페이스를 이해하기 좋게 하기 위한것.
그 클래스로 만등러진 객체를 변경할 수 있는 함수는 무엇이고, 또 변경할 수 없는 함수는 무엇인가? 사용자 쪽에서 알고 있어야 하는것..
2. 이 키워드를 통해서 상수객체를 사용할 수 있게 하자
프로그램의 실행 성능을 높이는 핵심 기법 -> 상수 객체에 대한 참조자로 진행
* 실제 프로그램에서 상수 객체가 생기는 경우 1) 상수 객체에 대한 포인터 혹은 2) 상수 객체에 대한 참조자로 객체가 전달될때..
단순 상수객체 변수의 상황은 거의 없다고 봐도 무방하다..
void print(const Test& ref); //이런식의 형태가 많다
이런 함수들의 대부분은 내부에서 무언가 대입을 하려거나 변경하려고 하지 않는다. 에러가 나기 때문에..
1. const 함수내에서(반환, 함수명, const 형태) static 멤버의 대입과 수정은 가능하다
그 이유는 static 멤버는 객체의 소유가 아니라 클래스 자체의 소유이기 때문이다.
클래스 변수라고도 한다.
2. 멤버로 포인터가 있는데 그 포인터가 가리키는 값을 변경하려는 경우
const 함수내에서 가능하다. int* ptr 을 예로
*ptr = 10 이런식..
그러나
주소를 변경하려고 하면 컴파일 에러가 발생한다.
3. mutable 은 비정적 데이터 멤버를 상수성의 족쇄에서 풀어준다. 즉 대입이 가능하게 해준다.