Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 생성자에서 const 필드를 초기화하는 방법

C++에서 const 타입의 멤버 변수는 선언과 동시에 초기화해야 하기 때문에, 일반적인 방식으로는 생성자 본문 내부에서 값을 대입할 수 없습니다. 그렇다면 생성자를 이용해 const 변수를 어떻게 초기화할 수 있을까요?

초기화 리스트(Initializer List) 사용하기

const 값을 생성자로 초기화하려면 반드시 초기화 리스트(initializer list)를 사용해야 합니다. 초기화 리스트는 클래스의 데이터 멤버를 초기화하는 데 사용되는 문법으로, 초기화할 멤버들의 목록은 생성자 이름 뒤의 콜론(:) 다음에 위치하며, 각 멤버는 콤마(,)로 구분됩니다.

이 방식은 const 멤버뿐만 아니라 참조(reference) 멤버나 기본 생성자가 없는 객체 멤버를 초기화할 때도 필수적으로 사용됩니다.

예제 코드

#include <iostream>
using namespace std;
class MyClass {
    private:
    const int x;
    public:
        MyClass(int a) : x(a) {
            //생성자
        }
        void show_x() {
            cout << "상수 x의 값: " << x ;
        }
};
int main() {
    MyClass ob1(40);
    ob1.show_x();
}

실행 결과

상수 x의 값: 40

코드 설명

위 예제에서 MyClass 클래스는 private 영역에 const 정수형 멤버 x를 가지고 있습니다. 생성자 MyClass(int a)에서 콜론 뒤에 x(a)라고 작성한 부분이 바로 초기화 리스트입니다. 이를 통해 매개변수 a의 값이 const 멤버 x에 전달되어 초기화됩니다.

만약 생성자 본문 안에서 x = a;와 같이 대입하려고 하면 컴파일 오류가 발생합니다. const 멤버는 한 번 초기화된 후에는 값을 변경할 수 없기 때문입니다.