class의 변수의 경우 외부에서 변수들에 접근할 수 있다면 잘못된 값이 저장이 될 가능성이 있다.
따라서 private로 변수들을 선언하고 잘못된 값이 저장되지 않도록 안전한 형태로만 변수 접근을 허용하도록 해야한다.
class Test
{
private:
int member1;
int member2;
public:
int GetMember1() const {
return member1;
}
int GetMember2() const{
return member2;
}
void SetMember1(int num){
//잘못된 값 검사코드
member1 = num;
}
}
멤버변수 member1
에 접근할 수 있는 방법은 GetMember1
과 SetMember1
뿐이다.
따라서 멤버변수의 값을 변경하고 싶을 땐 SetMember1
을 호출해야하고 SetMember
을 통해 추가적인 검사도 할 수 있다.
이러한 함수들을 Access함수라고 한다.
const가 붙으면 다음과 같은 효과가 있다.
- 이 함수 내에서 멤버변수 값을 변경하지 못한다.
- const함수 내에서 const가 아닌 함수의 호출이 제한된다.
1.int GetMenber() const { num = 5; }
: 멤버변수를 변경하려 하면 컴파일 에러가 생긴다.
2.void ShowNum () const { cout << GetMember(); }
: GetMember
가 const 선언이 없다면 컴파일 에러가 생긴다. const가 아니라면 간접적인 멤버 변경의 가능성이 생기기 때문이다.
-> 다른 객체의 멤버함수의 경우 const가 아니더라도 멤버변경 가능성이 없기 때문에 ㄱㅊ