const 함수
Programming/C++ 2015. 5. 12. 16:36cosnt 함수는 다음과 같은 내용을 선언하는 것이다.
- 함수 내에서 멤버변수에 저장된 값을 변i경하지 않겠다.
ex 1)
class SimpleClass
{
private:
int num;
public:
void InitNum(int n)
{
num = n;
}
int GetNum()
{
return num;
}
void ShowNum() const
{
cout << GetNum() << endl; // 컴파일 에러
}
};
위의 클래스의 정의에서 GetNum()의 함수는 실제로 값을 변경시키지 않지만 컴파일 에러가 난다.
이유는 const 함수내에서는 const가 아닌 함수의 호출이 제한되기 때문이다.
ex 2)
class EasyClass
{
private:
int num;
public:
void InitNum(int n)
{
num = n;
}
int GetNum()
{
return num;
}
};
class LiveClass
{
private:
int num;
public:
void InitNum(const EasyClass &easy)
{
num = easy.GetNum(); // 에러 발생
}
};
위의 예제에서 InitNum의 매개변수 easy는 const 참조자이다.
그런데 GetNum을 호출하면 에러가 발생하게 되는데 이는 GetNum이 cosnt 함수가
아니기 때문이다.
C++에서는 cosnt 참조자를 대상으로 값의 변경 능력을 가진 함수의 호출을 허용하지 않는다.
때문에 const참조자를 이용해서는 const함수만 호출이 가능하게 된다.
'Programming > C++' 카테고리의 다른 글
복사생성자 (0) | 2015.05.13 |
---|---|
클래스와 배열 (0) | 2015.05.13 |
캡슐화(Encapsulation) (0) | 2015.05.12 |
정보은닉(Information Hiding) (0) | 2015.05.12 |
클래스 (0) | 2015.05.12 |