클래스는 서로간의 부모,자식 관계를 형성 가능합니다.
자식 클래스는 부모 클래스의 맴버 변수와 맴버 함수를 사용할 수 있습니다.
단, 부모 클래스에 있는 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 : 다중 상속 구현하는 코드 작성하기