멤버 변수 초기화 ? 다양한 문법이 존재
컴파일러에 따라 멤버 변수들을 0으로 미는 경우도 있음.
초기화 방법
모던 C++을 사용하지 않는 규칙을 가지는 보수적인 팀도 있다.
초기화 리스트
Is-A (Knight Is-A Player? 기사는 플레이어다) OK -> 상속관계
Has-A (Knight Has-A Inventory? 기사는 인벤토리를 포함하고 있다 갖고 있다) OK -> 포함관계
class Knight : public Player
{
public:
Knight() : Player(1), _hp(100)
/*
선처리 영역
Inventory()
*/
{
_hp = 100;
_inventory = Inventory(20);
}
public:
int _hp;
Inventory _inventory; // Knight 생성자의 선처리 영역에서 Inventory 생성자가 호출됨.
}
위 코드에서 생성자 소멸자 호출은?
Intentory() -> Inventory(20) -> Inventory(20)으로 생성된 임시 객체 소멸자 -> Knight가 해제되면서 불리는 Inventory 소멸자
초기화 리스트를 잘 사용하자.