객체지향의 3대속성 - 상속성
class Player
{
public:
//멤버 함수
void Move() { cout << "Plaer Move 호출" <<endl; }
void Attack() { cout << "Player Attack 호출" << endl; }
void Die()
{
cout << "Die" << endl;
}
public:
//멤버 변수
StatInfo _statInfo;
};
class Knight : public Player
{
public:
};
class Mage : public Player
{
public:
};
이런식으로 나이트와 메이지에 플레이어의 멤버변수, 멤버 함수들을 사용 할 수 있음
하지만 무조건 저 플레이어에만 있는것을 사용하는건 아님
class Knight : public Player
{
public:
public:
int _stamina;
};
이런식으로 기사 만의 변수를 사용할 수 있음
하지만 나이트 안에 플레이어와 같은이름의 함수,변수등을 사용할 경우 나이트 안에있는것이 사용됨. 그래도 플레이어의 것이 사용하고싶다고 한다면(Move)함수
메인함수에서 사용법.
int main()
{
Knight k;
k._statInfo.hp = 100;
k._statInfo.attack = 10;
k._statInfo.defence = 5;
k._stamina = 50;
k.Attack();
k.Move();
k.Player::Move();
k.Die();
return 0;
}
그렇다면 나이트를 호출했을때 플레이어의 생성자를 호출하는가?
아니다 둘다 호출한다!
순서는
플레이어 생성자- 나이트 생성자 - 나이트 소멸자 - 플레이어 소멸자
하위 클래스에서는 상위클래스 생성자중 선택해서 사용할 수 있음
Knight(int stamina) : Playr(100)//플레이어 클래스중에 매개변수 1개가 있는 생성자 선택
//메모리
//[[Player]]
//[ Knight ] 이런식으로 위에것을 기반으로 추가적 설계가 가능하다고 보면 됨.