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;
};