초기화 리스트

namu·2022년 7월 28일

멤버 변수 초기화 ? 다양한 문법이 존재

컴파일러에 따라 멤버 변수들을 0으로 미는 경우도 있음.

초기화 방법

  • 생성자 내에서
  • 초기화 리스트
  • C++11 문법 (int _hp = 200;)

모던 C++을 사용하지 않는 규칙을 가지는 보수적인 팀도 있다.

초기화 리스트

  • 일단 상속 관계에서 원하는 부모 생성자를 호출할 때 필요하다
  • 생성자 내에서 초기화 vs 초기화 리스트
    -- 일반 변수는 별 차이 없음
    -- 멤버 타입이 클래스인 경우 차이가 난다

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 소멸자

초기화 리스트를 잘 사용하자.

profile
안녕하세요

0개의 댓글