승상의 코딩 블로그
[C++] 클래스의 const 멤버함수 본문
변수는 선언한 뒤 값을 계속해서 바꿀 수 있다.
그러나 const 키워드를 사용하면 그 변수의 값은 변경할 수 없다.
"변수의 값을 변경하지 못한다" 라는 것은 코드를 읽을 때, 고려해야하는 부분을 줄여줄 뿐 아니라, 자신 또는 타인이 코드를 잘못 수정하지 않도록 해준다.
Const 멤버함수
모든 상황이 천편일률적일 순 없다.
클래스의 멤버변수 또한 상황에 따라 값을 변경해야 할 수도 있고 변경하지 않아야 할 수도 있다.
클래스의 멤버변수의 값은 클래스의 멤버함수로 인해 대부분 수정되는데,
멤버함수에 const 를 사용하여 클래스의 멤버함수 내부에서 멤버변수가 변경할 수 없게 할 수 있다.
(const 로 선언되는 멤버 함수의 내부에서 멤버변수는 읽기만 가능함)
예제를 보면, Point 클래스의 멤버변수인 mX 에 대한 Getter 함수(GetX)를 제공하고 있다.
GetX 는 mX 값을 수정없이 반환만 하므로 const 키워드를 사용했다.
AddX 함수는 mX 의 값을 변경하는 함수이다.
그러므로, AddX 에서는 const 키워드를 사용하지 않았다.
만약, AddX 에 const 키워드를 사용한다면 컴파일 에러가 발생한다.
멤버 함수의 호출로 인해 멤버 변수의 값이 변경된다면 사이드 이펙트를 만들 수 있기 때문에, 이해하지 않고 사용하기 힘들다.
이 예제에서는 코드가 간단하여 바로바로 영향성 판단이 가능하지만, 코드의 규모가 커질수록 영향성을 판단하기 힘들어진다.
제약은 자유도를 낮추는 것처럼 보일 수 있지만,
실수를 적게하도록 만드는 등 이점도 있다. (타인뿐 아니라, 미래의 나도 포함이다)
'C++' 카테고리의 다른 글
[C++] 객체 생성 (스택/힙) (2) | 2024.09.18 |
---|