仮関数
基本クラスのポインタを使って派生クラスのオブジェクト呼び出すには?
【プログラム】
#include <iostream>
using namespace std;
//Carクラスの宣言
class Car{
//派生クラスからアクセス出来るようにする
protected:
int num;
double gas;
public:
Car();
void setCar(int n,double g);
//仮関数宣言する
virtual void show();←オーバライド
};
//RacingCarクラスの宣言/派生クラス
class RacingCar : public Car
{
//派生クラスからアクセス出来るようにする
private:
int course;
public:
RacingCar();
void setCourse(int c);
void show();←オーバライド
};
//Carクラスメンバ関数の定義
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::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<<"コース番号は"<<course<<"です。n";
}
int main()
{
Car* pcars[2];
Car car1;
RacingCar rccar1;
pcars[0] = &car1;
pcars[0]->setCar(1234,20.5);
pcars[1] = &rccar1;
pcars[1]->setCar(4567,30.5);
for(int i=0;i<2;i++){
pcars[i]->show();
}
return 0;
}
■結果表示
車を作成しました。
車を作成しました。
レーシングカーを作成しました。
ナンバーを1234にガソリン量を20.5にしました。
ナンバーを4567にガソリン量を30.5にしました。
車のナンバーは1234です。
ガソリン量は20.5です。
レーシングカーのナンバーは4567です。
ガソリン量は30.5です。
コース番号は0です。