가 뭔뎅? §
- 메소드에
const
가 붙어있으면 그 메소드는 object 의 멤버들을 변경하지 못한다.
- 가령 아래와 같은 함수는
const
키워드 때문에 6번째 줄의 =
에서 컴파일 에러가 난다.
class Example {
private:
int ex_i_;
public:
auto SetExI(int& ex_i) const -> void {
this->ex_i_ = ex_i;
}
};
const_func.cc:6:13: error: cannot assign to non-static data member within const member function 'SetExI'
this->ex_i_ = ex_i;
~~~~~~~~~~~ ^
const_func.cc:5:6: note: member function 'Example::SetExI' is declared const here
auto SetExI(const int& ex_i) const -> void {
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
- 이걸 사용하면 의도치 않게 멤버를 변경하게 되는 등의 실수를 미연에 방지할 수 있겠다 그쵸?