拡張クラスが既存のクラスのメンバを受け継ぐことを継承(inheritance)と呼ぶ
基本クラス、新しいクラスは派生クラスと呼ぶ
### 継承
class Car {
private:
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);
};
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";
}
int main() {
RacingCar rccar1;
rccar1.setCar(1234, 20.5);
rccar1.setCourse(5);
return 0;
}
$ g++ -o sample sample.cpp && ./sample
車を作成しました。
レーシングカードを作成しました。
車のナンバーを1234ガソリン量を20.5にしました。
コース番号を5にしました。
### 基本クラスのコンストラクタを指定
RacingCar::RacingCar(int n, double g, int c): Car(n, g) が呼び出されるようになる。
class Car {
private:
int num;
double gas;
public:
Car();
Car(int n, double g);
void setCar(int n, double g);
void show();
};
class RacingCar : public Car {
private:
int course;
public:
RacingCar();
RacingCar(int n, double g, int c);
void setCourse(int c);
};
Car::Car() {
num = 0;
gas = 0.0;
cout << "車を作成しました。\n";
}
Car::Car(int n, double g){
num = n;
gas = g;
cout << "ナンバー" << num << "ガソリン量" << gas << "の車を作成しました。\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";
}
RacingCar::RacingCar(int n, double g, int c): Car(n, g){
course = 0;
cout << "コース番号" << course << "のレーシングカーを作成しました。\n";
}
void RacingCar::setCourse(int c){
course = c;
cout << "コース番号を" << course << "にしました。\n";
}
int main() {
RacingCar rccar1(1234, 20.5, 5);
return 0;
}