🙇‍♀️초기화 리스트 복습

  • 초기화 방법
    • 생성자 내에서
    • 초기화 리스트
    • C++11 문법
  • 초기화 리스트
    • 일단 상속 관계에서 원하는 부모 생성자 호출할 떄 필요
    • 생성자 내에서 초기화 vs 초기화 리스트
    • 일반 변수는 별 차이 없음
    • 멤버 타입이 클래스인 경우 차이가 난다
    • 정의함과 동시에 초기화가 필요한 경우 (참조 타입, const 타입)


🪐은닉성 복습

class Inventory // 일반적인 클래스
{
public:
	Inventory() { cout << "Inventory() 생성자" << endl; }
	Inventory(int size) { cout << "Inventory(int size) 생성자" << endl; _size = size; }

	~Inventory() { cout << "~Inventory() 소멸자" << endl; }

public:
	int _size = 10;
};



class Player // 부모 클래스
{
public:
	Player() {}
	Player(int id) {}
};


// Is-A (Kngiht Is-A Player? 기사는 플레이어다 ) OK -> 상속관계
// Has-A (Knight Has-A Inventory? 기사는 인벤토리를 포함하고 있다 갖고 있다) OK -> 포함관계


class Knight : public Player // Player를 상속받는 중
{
public:
	Knight() : Player(1), _hp(100), _inventory(20), _hpRef(_hp), _hpConst(100) // 초기화 리스트
	{
		_hp = 100; // 생성자 내에서 초기화

		// _inventory = Inventory(20); // X
		// 선처리 영역에서 기본 생성자를 호출하고 그다음 기타 생성자를 만들기떄문에 안좋은 코드
		// 초기화 리스트에 올리자

		// _hpRef = _hp; // Error
		// _hpConst = 100; // Error
		// 생성함과 동시에 초기화가 필요
		// C++11 문법이나 초기화 리스트 사용
	}

public:
	int _hp = 200; // C++11 문법 초기화
	Inventory _inventory;

	int& _hpRef = _hp;
	const int _hpConst = 100;
};

태그:

카테고리:

업데이트: