Skip to content

Latest commit

 

History

History
107 lines (82 loc) · 2.1 KB

18.Inheritance.md

File metadata and controls

107 lines (82 loc) · 2.1 KB

상속

클래스는 서로간의 부모,자식 관계를 형성 가능합니다.

자식 클래스는 부모 클래스의 맴버 변수와 맴버 함수를 사용할 수 있습니다.

단, 부모 클래스에 있는 private 맴버는 자식이 물려받을 수 없습니다.

private 상속

상속받은 공개 값을 외부에서 접근할 수 없게 합니다.

상속관계 호출 순서

  • 생성자 : 부모 -> 자식 순서
  • 소멸자 : 자식 -> 부모 순서

추상 함수

함수의 선언부분만 부모 클래스에 있고, 구현 부분이 없는 함수를 말합니다.

오버라이딩을 이용하여 구현됩니다.

class Graphic
{
public:
     virtual void Draw()=0;
};
class Graphic_black
{
public:
     virtual void Draw() {return 255;};
};

int main(){
    Graphic *p1 = new Graphic_black;
    cout << p1->Draw() << endl;
    delete p1;

    return 0;
}

실습 코드

아래 실습 코드를 이용하여 각각의 클래스의 관계와 private 상속의 관계를 살펴보시기바랍니다.

#include<iostream>

using namespace std;

class parent {
public:
    parent() {
        cout << " 부모 생성자 출력" << endl;
    }
    ~parent() {
        cout << " 부모 소멸자 출력" << endl;
    }
    int a;
protected:
    int b;
private:
    int c;
};

class child : public parent{
public:
    child() {
        cout << " 자식 생성자 출력" << endl;
    }
    ~child() {
        cout << " 자식 소멸자 출력" << endl;
    }
protected:
    int d;
};

class child_two : private parent {
public:
    child_two() {
        cout << " 두번째 자식 생성자 출력" << endl;
    }
    ~child_two() {
        cout << " 두번째 자식 소멸자 출력" << endl;
    }
private:
    int d;
};

int main() {
    parent sample_p;
    child sample_c;
    child_two sample_two;
    // 이곳에서 변수를 불러와서 테스트 해보시기 바랍니다.

    return 0;
}

과제

  • 과제-1 : 위 실습 코드를 이용하여 child 클래스에 접근하는 또 다른 자식 클래스를 만들기

  • 과제-2 : 다중 상속 구현하는 코드 작성하기