◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!
다른 클래스의 특성을 가져와 좀 더 확장된 기능의 새로운 클래스를 만들 수 있는 상속에 대해서 이해한다.
#include#include using namespace std; class Mammal { public: Mammal():itsAge(2), itsWeight(5) {} ~Mammal(){} int GetAge() const { return itsAge; } void SetAge(int age) { itsAge = age; } int GetWeight() const { return itsWeight; } void SetWeight(int weight) { itsWeight = weight; } void Speak()const { cout << "Mammal sound!\n"; } void Sleep()const { cout << "shhh. I'm sleeping.\n"; } // 부모가 자식에게 private에 대한 접근을 허용한다. int GetSpeed() const { return itsSpeed; } void SetSpeed(int speed) { itsSpeed = speed; } protected: int itsAge; int itsWeight; private: int itsSpeed; }; enum BREED { GOLDEN, CAIRN, DANDIE}; class Dog : public Mammal { public: Dog():itsBreed(GOLDEN) { itsAge = 1;//protected이므로 가능. //itsSpeed = 10;//private은 자식도 접근 불가능. SetSpeed(10);// OK. } ~Dog(){} BREED GetBreed() const { return itsBreed; } void SetBreed(BREED breed) { itsBreed = breed; } void WagTail() const { cout << "Tail wagging...\n"; } void BegForFood() const { cout << "Begging for food...\n"; } private: BREED itsBreed; }; void main() { Dog fido; fido.Speak(); fido.WagTail(); cout << sizeof(Dog) << endl; // protected : 자식은 접근이 가능하고 외부에선 접근이 불가능하다. // 외부에서는 protected 와 private 의 차이가 전혀 없다. //fido.itsAge = 10; // -> protected이므로 불가능. fido.SetAge(5); cout << "Fido is " << fido.GetAge() << " years old\n"; // private : 자식과 외부 모두 접근이 불가능하다. //fido.itsSpeed = 50; // -> private이므로 당연히 접근 불가능. }