반환형 함수명() const
: 함수 내에서의 모든 데이터는 상수 취급.
: 멤버 데이터를 변경하지 않는 다는 것을 명시할 수 있음
1) 객체 내의 데이터를 변경하는 용도가 아닌 상태를 확인하는 용도, get하는 용도로 사용시
-> 코드 안정성을 가지고 옴.
--> 한 눈에 함수의 용도를 알 수 있음!
2) 상수 객체는 상수 멤버 함수만 호출할 수 있음.
: 선택이 아닌 필수다!
-> const ref 인자로 사용하는 곳에서는 반드시 상수함수를 사용해야 함.
: operator< , > , == 와 같은 비교 함수
1) call by const ref 자체가 const 객체임.
-> call by ref const 객체를 이용해 함수를 사용할 때 반드시 사용해야 함!
2) 상수 객체를 따로 생성시 .
2번.
: 객체와 get 멤버 함수를 만들고, main에서 호출하라.
void foo()를 전역 함수로 만들고, 객체를 call by ref로 보낸후,
foo(const & obj) 함수에서 obj.print() 함수를 호출해 보아라!
결과 : print를 상수취급하지 않아서 문제 발생함.
1) 함수 호출시 멤버에 변경이 없을 경우, 상수 멤버로 설정하자.
2) 상수 객체는 반드시 상수 멤버 함수만 호출할 수 있음.
3) cpp와 헤더 분류시, 반드시 const를 동일하게 표기해야 함.
객체의 상태를 변경하지 않은 모든 멤버 함수는
반드시 상수 멤버 함수로 만들어야 함.
: 멤버 데이터를 mutable로 설정하면, const 함수에서도 값 변경이 가능함.
: mutable 선언 후, 상수 함수에서 해당 변수를 변경해서 출력하라.
-> Point 클래스에서 print() 출력함수가 몇번 call했는지
카운팅하는 변수를 만들었음.
class Test
{
int data;
public :
int * getData() const
{
return &data;
}
}