less than 1 minute read

생성자의 초기화 리스트(initializer list)

생성자를 초기화 하는 방법에는 두 가지가 있다.

Marine::Marine() {
    hp = 50;
    damage = 5;
}
Marine::Marine() : hp(50), damage(5) {}

위에서 밑에 방식을 초기화 리스트라고 한다. 둘의 기능은 같아 보이는데 초기화 리스트를 왜 사용할까?

둘은 약간의 차이를 가지고 있다.

경제적(?)인 초기화 리스트

초기화 리스트를 사용하면 생성과 초기화를 동시에 하게 된다. 반면에 초기화 리스트를 사용하지 않는다면 생성을 먼저 하고 그 다음에 대입을 수행하게 된다.

쉽게 말해서 초기화 리스트를 사용하는 것은 int a = 10; 과 같고, 사용하지 않는 것은 int = a; a = 10;과 같다.

만약 int가 아니라 클래스였다면, 전자의 경우 복사 생성자가 호출되는 반면, 후자의 경우 디폴트 생성자가 호출된 뒤에 대입이 일어나게 된다.

결론 : 그렇기 때문에 초기화 리스트를 사용하는 것이 더 좋다.

참고자료

Tags:

Categories:

Updated: