C++함수와 클래스

생성자와 멤버 초기화 리스트

객체 생성 시점을 제어하는 생성자와 멤버 초기화 리스트의 역할을 정리합니다.

마지막 수정 2026년 3월 19일

기본 패턴

cpp
class User {
public:
    User(std::string name, int level)
        : name(std::move(name)), level(level) {}

private:
    std::string name;
    int level;
};

설명

  • 생성자는 객체가 만들어질 때 필요한 초기 상태를 설정하는 특별한 함수입니다.
  • 멤버 초기화 리스트는 본문보다 먼저 멤버를 초기화하므로 기본적인 권장 패턴입니다.
  • const 멤버나 참조 멤버는 초기화 리스트에서만 제대로 초기화할 수 있습니다.
  • 초기화와 대입은 비슷해 보여도 객체 수명 관점에서는 다른 단계입니다.

짧은 예제

cpp
#include <iostream>
#include <string>

class Course {
public:
    Course(std::string title, int credit)
        : title(std::move(title)), credit(credit) {}

    void print() const {
        std::cout << title << " / " << credit << "\n";
    }

private:
    std::string title;
    int credit;
};

int main() {
    Course course("Data Structures", 3);
    course.print();
}

빠른 정리

항목설명
생성자객체 생성 시 호출되는 특별한 함수
초기화 리스트멤버를 생성과 동시에 초기화
const 멤버초기화 리스트가 사실상 필수
참조 멤버생성 후 다른 대상을 가리키게 바꿀 수 없음
초기화 우선대입보다 더 직접적인 생성 단계

주의할 점

초기화 리스트의 실제 실행 순서는 코드에 적은 순서가 아니라 멤버 선언 순서입니다. 선언 순서와 초기화 순서를 일부러 다르게 적으면 혼란이 커집니다.