U E D R , A S I H C RSS

삼총사Cpp Study/Inheritance

상속에 대해서 설명해 보고자 합니다. 길더라도 끝까지 읽어봐주세요
당신은 지금 StarCraft라는 게임의 제작자를 맡게 되었다.(가정입니다.-_-유치하더라도 들어주세요.) 먼저 마린과 파이어뱃이라는 유니트가 기획되었다.

~cpp 
class CMarine // 마린을 정의한 클래스
{
private:
    int m_Attack;
    int m_Defence;
    int m_HP;
public:
    void Attack() { // 마린 공격!! }
};

class CFirebat // 파이어뱃을 정의한 클래스
{
private:
    int m_Attack;
    int m_Defence;
    int m_HP;
public:
    void Attack() { // 파이어뱃 공격!! }
};

일단 완성이다. 기쁜마음으로 제출을 했다.
다음날 문제점이 발견되었다. 마린과 파이어뱃으로 부대를 구성하여 배열에 저장하려고 하였는데 두개의 클래스가 틀리기 때문에 한개의 배열로는 포함할 수가 없었다.

~cpp 
CMarine Force[12]; // 이렇게 하면 부대안에는 마린밖에 넣지 못한다.
CFirebat Force[12]; // 이렇게 하면 부대안에는 파이어뱃밖에 넣지 못한다.
아.. 이 문제를 어떻게 하면 좋을까~? 이럴때 사용할 수 있는 스킬이 바로 상속(Inheritance)이다.
일단 파이어뱃도 아니고 마린도 아닌 유니트를 만들어보자

~cpp 
class CUnit
{
protected: // protected를 사용한 이유는 상속받은 클래스에서도 이 멤버들을 사용할 수 있게 하기 위함이다.
    int m_Attack;
    int m_Defence;
    int m_HP;
public:
    void Attack();
};
마린과 파이어뱃은 이 유니트라는 클래스를 상속 받으면 된다.

~cpp 
class CMarine : public CUnit // 이렇게 상속받는다.
{
public:
    void Attack() { // 마린 공격! }
};

class CFirebat : public CUnit
{
public:
    void Attack() { // 파이어뱃 공격! }
};

이렇게 한 후 부대를 만들어보자

~cpp 
CUnit Force1[12]; // 이렇게 하면 마린도, 파이어뱃도 부대안에 들어갈 수 있다.

이렇게 첫번째 임무를 완성하였다.
----
삼총사CppStudy
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:29:39
Processing time 0.0151 sec