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です。
派生クラスで定義したメンバ関数が機能することをオーバーライドという