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