상속(Inheritance)의 기본 동작에 관한 코드이다.

Car 클래스를 상속한 Number 클래스는 부모와 자식 클래스의 관계이다.

Car 클래스 <-> Number 클래스의 관계에서


상위 클래스 <-> 하위 클래스

기초(base) 클래스 <-> 유도(derived) 클래스

슈퍼(super) 클래스 <-> 서브(sub) 클래스

부모 클래스 <-> 자식 클래스


 모두 같은 의미를 가지는 용어이다.

상속의 기본 형태

class A

{

//...

};


class B:public A 

{

//...

};





 자식 클래스의 객체는 부모 클래스로 부터 상속 받은 객체까지 모두 포함하고 있다. (위 그림 참조) 따라서 자식 클래스의 생성자는 부모 클래스의 멤버까지 초기화해야 한다. 이때 부모 클래스의 생성자를 호출해서 부모 클래스의 멤버를 초기화하는 것이 좋다.


Number(char *car_name, char *car_color, int car_no):Car(car_name,car_color)
    {
        license_plate_number = car_no;
    } 

부모 클래스의 생성자 호출을 명시한 예


Car 클래스를 상속 받는 Number 클래스를 통해 자동차에 대한 정보를 상속 받아 차량 번호를 추가하여 출력하는 예제

#include <iostream>
#include <cstring>
using namespace std;

class Car
{
private:
    char name[30];
    char color[20];
public:
    Car(char *car_name, char *car_color)
    {
        strcpy_s(name,car_name);
        strcpy_s(color,car_color);
    }
    void show_info();
};

void Car::show_info()
{
    cout << name << " is " << color << endl;
}

class Number : public Car
{
private:
    int license_plate_number;
public:
    Number(char *car_name, char *car_color, int car_no):Car(car_name,car_color)
    {
        license_plate_number = car_no;
    }
    void show_all()
    {
        show_info();
        cout << "License plate number is " << license_plate_number << endl;
    }
};

int main()
{
    Number car1("Sonata","white",1234);
    Number car2("Grandure","black",1000);
    car1.show_all();
    car2.show_all();

    return 0;
}


'프로그래밍 > C++' 카테고리의 다른 글

생성자 (Constructor)  (0) 2014.02.06
복사 생성자  (0) 2013.09.06
explicit 예제  (0) 2013.09.06
두 개의 Circle 클래스를 기반으로 한 Ring 클래스 생성  (0) 2013.08.22
난수 사용하기  (0) 2013.07.25
참조자와 함수의 호출관계  (0) 2013.07.24
new & delete 기본 사용법  (0) 2013.07.23

+ Recent posts