[C++] 派生クラスと基本クラス

protectedとすると、派生クラスからアクセスできる。

class Car {
    protected:
        int num;
        double gas;
    public:
        Car();
        void setCar(int n, double g);
        void show();
};

class RacingCar : public Car {
    private:
        int course;
    public:
        RacingCar();
        void setCourse(int c);
        void show();
};

Car::Car() {
    num = 0;
    gas = 0.0;
    cout << "車を作成しました。\n";
}


void Car::setCar(int n, double g){
    num = n;
    gas = g;
    cout << "車のナンバーを" << num << "ガソリン量を" << gas << "にしました。\n";
}

void Car::show(){

    cout << "車のナンバーは" << num << "です。\n";
    cout << "ガソリン量は" << gas << "です。\n";
}

RacingCar::RacingCar(){
    course = 0;
    cout << "レーシングカーを作成しました。\n";
}

void RacingCar::setCourse(int c){
    course = c;
    cout << "コース番号を" << course << "にしました。\n";
}

void RacingCar::show(){
    cout << "レーシングカーのナンバーは" << num << "です。\n";
    cout << "ガソリンの量は" << gas << "です。\n";
    cout << "コース番号は" << num << "です。\n";

}

int main() {
    
    RacingCar rccar1;
    rccar1.setCar(1234, 20.5);
    rccar1.setCourse(5);

    rccar1.show();

    return 0;
}

$ g++ -o sample sample.cpp && ./sample
車を作成しました。
レーシングカーを作成しました。
車のナンバーを1234ガソリン量を20.5にしました。
コース番号を5にしました。
レーシングカーのナンバーは1234です。
ガソリンの量は20.5です。
コース番号は1234です。

派生クラスで定義したメンバ関数が機能することをオーバーライドという