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 사용에 대해 알아보았습니다.

 

감사합니다.