일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 유데미 러닝크루
- Code Generation
- 맥
- 프로그래밍
- 가상환경
- 플러터
- 개발자
- 다트
- riverpod
- command
- 리눅스
- flutter
- 책
- ExpansionTile
- 명령어
- 디자인패턴
- 유데미
- copyWIth
- 도서
- 유데미 코리아
- linux
- dart
- python
- 개발
- 파이썬
- freezeD
- 리버팟
- 코딩
- vscode
- ListTile
- Today
- Total
승상의 코딩 블로그
[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 |
---|