C++
멤버 함수의 const 사용
Vetenir
2025. 1. 2. 21:31
C++을 공부하면 마주하게 되는 멤버 함수에 사용되는 const의 용도와 의미를 알아보고
추가적으로 매개변수에 사용되는 const와 &의 사용 이유를 정리해 보았습니다.
멤버 함수의 const
C++을 공부하다보면 멤버 함수 뒤에 const가 있는 경우가 있습니다.
void function() const {}
멤버 함수 뒤의 const의 용도
1. 객체의 변수 변경을 막습니다.
2. const 객체는 const 멤버 함수만 호출 가능합니다.
예시 코드와 함께 좀 더 자세히 알아보겠습니다.
#include <iostream>
using namespace std;
class Example {
private:
int value;
public:
Example(int v) : value(v) {}
int getValue() const { // const 함수
return value;
}
void setValue(int v) { // 비-const 함수
value = v;
}
};
int main() {
const Example obj(10); // const 객체 생성
// obj.setValue(20); // 컴파일 에러: 비-const 멤버 함수 호출 불가
int v = obj.getValue(); // OK: const 멤버 함수는 호출 가능
cout << v ;
return 0;
}
const 객체 생성(const Example obj(10);)을 하면 obj.setValue(20); 는 const 멤버 함수가 아니기 때문에 오류가 발생합니다.
const Example obj(10); 에서 Example obj(10); 수정하면 오류는 안 나오지만
int getValue() const가 있어 값이 setValue(20)에 의해 변하지 않습니다.
// 값이 변경되려면 객체와 함수의 const를 모두 지워야 합니다.
위의 예시 코드를 통해 const의 안정성을 확인할 수 있었습니다.
const 멤버 함수는 객체의 상태를 읽기만 하겠다는 약속입니다.
이를 통해 함수의 의도를 명확히 하고, 코드의 안정성을 높입니다.
매개변수에 ‘const’와 ‘&’를 사용하는 이유
예를 들어
void printMessage(const string& message)
void printMessage(string message)
두 코드가 하는 일은 거의 동일하지만 역할이 다릅니다.
1. & 사용
- 우선 &를 사용하면 원본 객체를 직접 참조하기에 복사가 일어나지 않는다.
그래서 메모리와 연산 시간이 절약된다. - 특히 큰 데이터를 처리할 때 성능 향상에 유리.
- string은 복사 비용이 상대적으로 크기 때문에, 참조자를 사용하는 것이 일반적.
2. const 사용
- 매개변수를 수정할 수 없게 만들어준다.
- &를 사용하였지만 매개변수를 변경하고 싶지 않을 때 사용.
- 코드의 안정성을 높인다.
- 의도를 명확히 할 수 있다.
멤버 함수의 const 사용에 대해 알아보았습니다.
감사합니다.