승상의 코딩 블로그

[C++] 클래스의 const 멤버함수 본문

C++

[C++] 클래스의 const 멤버함수

양승상 2024. 9. 17. 21:07

 

변수는 선언한 뒤 값을 계속해서 바꿀 수 있다.

그러나 const 키워드를 사용하면 그 변수의 값은 변경할 수 없다.

"변수의 값을 변경하지 못한다" 라는 것은 코드를 읽을 때, 고려해야하는 부분을 줄여줄 뿐 아니라, 자신 또는 타인이 코드를 잘못 수정하지 않도록 해준다.


 

Const 멤버함수

모든 상황이 천편일률적일 순 없다.

클래스의 멤버변수 또한 상황에 따라 값을 변경해야 할 수도 있고 변경하지 않아야 할 수도 있다.

클래스의 멤버변수의 값은 클래스의 멤버함수로 인해 대부분 수정되는데,

멤버함수에 const 를 사용하여 클래스의 멤버함수 내부에서 멤버변수가 변경할 수 없게 할 수 있다.

(const 로 선언되는 멤버 함수의 내부에서 멤버변수는 읽기만 가능함)

 

 

예제를 보면, Point 클래스의 멤버변수인 mX 에 대한 Getter 함수(GetX)를 제공하고 있다.

GetX 는 mX 값을 수정없이 반환만 하므로 const 키워드를 사용했다.

 

AddX 함수는 mX 의 값을 변경하는 함수이다.

그러므로, AddX 에서는 const 키워드를 사용하지 않았다.

만약, AddX 에 const 키워드를 사용한다면 컴파일 에러가 발생한다.

 

멤버 함수의 호출로 인해 멤버 변수의 값이 변경된다면 사이드 이펙트를 만들 수 있기 때문에, 이해하지 않고 사용하기 힘들다. 

이 예제에서는 코드가 간단하여 바로바로 영향성 판단이 가능하지만, 코드의 규모가 커질수록 영향성을 판단하기 힘들어진다. 


 

제약은 자유도를 낮추는 것처럼 보일 수 있지만,

실수를 적게하도록 만드는 등 이점도 있다. (타인뿐 아니라, 미래의 나도 포함이다)

반응형

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

[C++] 객체 생성 (스택/힙)  (2) 2024.09.18
Comments