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