const 함수

Programming/C++ 2015. 5. 12. 16:36

cosnt 함수는 다음과 같은 내용을 선언하는 것이다.

 

- 함수 내에서 멤버변수에 저장된 값을 변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
admin