[씹어먹는 C++] 생성자의 초기화 리스트(initializer list)
생성자의 초기화 리스트(initializer list)
생성자를 초기화 하는 방법에는 두 가지가 있다.
Marine::Marine() {
hp = 50;
damage = 5;
}
Marine::Marine() : hp(50), damage(5) {}
위에서 밑에 방식을 초기화 리스트라고 한다. 둘의 기능은 같아 보이는데 초기화 리스트를 왜 사용할까?
둘은 약간의 차이를 가지고 있다.
경제적(?)인 초기화 리스트
초기화 리스트를 사용하면 생성과 초기화를 동시에 하게 된다. 반면에 초기화 리스트를 사용하지 않는다면 생성을 먼저 하고 그 다음에 대입을 수행하게 된다.
쉽게 말해서 초기화 리스트를 사용하는 것은 int a = 10;
과 같고, 사용하지 않는 것은 int = a; a = 10;
과 같다.
만약 int가 아니라 클래스였다면, 전자의 경우 복사 생성자가 호출되는 반면, 후자의 경우 디폴트 생성자가 호출된 뒤에 대입이 일어나게 된다.
결론 : 그렇기 때문에 초기화 리스트를 사용하는 것이 더 좋다.