定义描述交通工具的抽象类Vehicle,其中包含纯虚函数introduce用于介绍工具的概况。由Vehicle类派生出两种交通工具——飞机类Plane和火车类Train,再定义普通函数void info(Vehilce * veh),该函数能根据传递的对象正确调用属于所传对象的introduce函数。主函数中,输入字符串飞机或火车,在堆空间上生成相应的对象,传递该对象给info函数,信息显示结束后释放堆空间。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Vehicle
{
public:
Vehicle();
virtual void introduce() = 0;
~Vehicle();
private:
};
Vehicle::Vehicle()
{
}
Vehicle::~Vehicle()
{
}
class Plane:public Vehicle
{
public:
Plane();
void introduce() { cout << "你选择的是飞机!" << endl; }
~Plane();
private:
};
Plane::Plane()
{
}
Plane::~Plane()
{
}
class Train:public Vehicle
{
public:
Train();
void introduce() { cout << "你选择的是火车!" << endl; }
~Train();
private:
};
Train::Train()
{
}
Train::~Train()
{
}
void info(Vehicle * veh)
{
veh->introduce();
}
int main()
{
Vehicle *v1 = new Train;
Vehicle *v2 = new Plane;
string vehicle;
cout << "请输入飞机或者火车" << endl;
cin >> vehicle;
if (vehicle == "飞机")
{
info(v2);
}
else if (vehicle == "火车")
{
info(v1);
}
else
{
cout << "输入的字符串不符合规定" << endl;
return 1;
}
delete v1;
delete v2;
return 0;
}