const가 붙은 멤버함수

클래스의 멤버함수에는 함수 선언시 const 키워드를 뒤에 붙일 수 있다. 

ex)

void show() const;

 

이 경우 함수에 속해있는 객체의 멤버 변수를 변경할 수 없다. 

즉, 이 함수는 멤버 변수의 값을 수정하지 않는다는 뜻이다. 

ex)

#include <iostream>
using namespace std;

class Num {
int count;

public:
Num() {
count = 0;
}

void show() const {
count = 1;  // 에러 발생! 
cout << count << endl;
}
};

int main() {
Num n;
n.show();
return 0;
}

 

또한 const 처리된 멤버 함수 안에서 자신의 멤버 함수를 부르는데 제한이 생긴다 

const 처리된 멤버 함수 안에서는 const 처리된 멤버 함수만 부를 수 있기 때문이다

(const 처리되지 않은 멤버 함수를 사용하면 멤버 변수 값이 변경될 수도 있기 때문)

 

함수의 내용 중 멤버 변수의 값을 변경하는 것이 없더라도 const 처리하지 않으면 

const형 오브젝트에서도 부를 수 없다. 

(const 키워드를 붙여주어야만 const형 오브젝트가 호출하는것이 가능)

ex)

class Num {
int count;

public:
Num() { }

int number1() {
return 1;
}

int number2() const {
return 2;
}

void show() const {
number1();  // 에러 발생!
number2();
}
};

number1() 함수는 const 처리를 하지 않았기 때문에 호출할 수 없다 반면 number2() 함수는 

const 처리를 해주었기 때문에 호출이 가능한 것을 알 수 있다.

 

'c++' 카테고리의 다른 글

String class  (0) 2020.08.18
explicit, mutable  (0) 2020.08.18
초기화 리스트 (Initializer list)  (0) 2020.08.17
참조자 (레퍼런스 - reference)  (0) 2020.08.17
이름 공간 - namespace  (0) 2020.08.15
TAGS.

Comments