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 |
