Const keyword in C++

smsh0722·3일 전

기타 정리

목록 보기
2/7

C++ const Keyword

기본

const (상수 한정자): 값을 수정할 수 없게 제한한다.

const int x = 10;
// x = 20; // Error

주 목적은 Const Correctness (상수 정확성): "이 값은 변경하지 않는다"는 의도를 타입으로 표현하는 것.

const Pointer

const int* p;        // 값 변경 X, 주소 변경 O
int* const p = &x;   // 값 변경 O, 주소 변경 X
const int* const p;  // 값 변경 X, 주소 변경 X

기억법:

  • const가 * 왼쪽 → 가리키는 값이 const
  • const가 * 오른쪽 → Pointer 자체가 const

const Parameter

void foo(const int& x);

Const Reference (상수 참조)는:

  • 복사 없이 전달
  • 함수에서 원본 수정 불가

큰 객체 전달에 자주 사용한다.

void print(const std::string& str);

단순 값 전달에서는:

void foo(const int x);

함수 내부의 복사본만 수정하지 못하므로 외부 인터페이스상 의미는 작다.

const Member Function

class Test {
public:
    int getValue() const;
};

함수 뒤의 const는 객체 상태를 변경하지 않음을 의미한다.

const Test t;

t.getValue();   // OK
// t.setValue(); // Error

Const Object (상수 객체)는 const 멤버 함수만 호출할 수 있다.

핵심 정리

const T x;            // x 변경 X
const T* p;           // *p 변경 X
T* const p;           // p 변경 X
const T& ref;         // ref를 통해 원본 변경 X
func() const;         // 객체 상태 변경 X

실전에서 특히 중요한 것은 Const Reference (상수 참조)와 Const Member Function (상수 멤버 함수)이다.

0개의 댓글