생성자를 포함한 클래스의 선언부는 흔히 다음과 같은 형태를 갖고 있다.

1
2
3
4
5
6
7
8
9
10
11
class CLASS1{
private:
    int num1, num2;

public:
    CLASS1(n1, n2)
    {
        this->num1 = n1;
        this->num2 = n2;
    }
}

클래스의 생성자를 다음과 같이 콜론(:) 연산자를 이용하여 좀 더 간편한 형태로 쓸 수 있다.

1
2
3
4
5
6
7
class CLASS1{
private:
    int num1, num2;

public:
    CLASS1(n1, n2): num1(n1), num2(n2) {}
}

이처럼 생성자의 내부 블록이 아니라 콜론 연산자를 이용해 생성자의 파라미터 선언부 바로 옆에 멤버변수들을 붙여 쓴 것을 멤버 초기화 리스트(member initializer list)라 한다.

멤버 초기화 리스트를 쓰면 가독성이 좋다는 것 외에도 프로그램의 실행 속도상의 이점이 있다. 기계어로 번역되면 앞의 방식으로는 생성자 내에서 (1)num1이라는 멤버 변수의 선언과 (2)생성자로 전달된 인수의 멤버 변수에의 대입이라는 두 코드가 순서대로 실행되는데, 멤버 초기화 리스트 방식으로 생성자가 수행되면 생성자 내에서 num1이라는 멤버변수의 선언과 동시에 생성자로 전달된 인수로의 초기화가 실행되기 때문이다.