상속성(inheritance) 은 객체 지향 프로그램에서 굉장히 중요한 특징이다!!
어떤 class A가 있을 때, A로부터 상속을 받은 class B가 있다면 B를 자식 class, A를 부모 class라고 부른다. B는 A가 가지고 있는 멤버를 모두 가지고 있다.
간단한 예제
#include <iostream>
using namespace std;
class Parent
{
public:
int n;
};
class Child : public Parent
{
public:
double f;
};
int main()
{
Parent P;
Child C;
P.n = 3;
C.n = 5;
C.f = 4.23;
return 0;
}
상속을 받으면 부모 class의 멤버를 갖게 되지만, 완전히 모든 멤버를 다 가지는 건 아니다.
상속되지 않는 것으로는 '생성자', '소멸자', '대입 연산자', '복사 생성자' 네 가지가 있다.
생성자의 경우 class에 대해 하나 이상 만들지 않으면 자동으로 기본 생성자가 생성된다. 부모 class에는 생성자가 정의되었어도 자식 class에는 정의된 생성자가 없다면 자식 class에서는 자동으로 기본 생성자가 정의된다.
e.g.
#include <iostream>
using namespace std;
class Parent
{
public:
Parent()
{
cout << "Parent class constructor" << endl;
}
};
class Child : public Parent
{
public:
Child()
{
cout << "Child class constructor" << endl;
}
};
int main()
{
Child C;
return 0;
}
결과로는 둘 모두 실행되어 parent class, child class 순서대로 출력된다.