一个关于多态性编程测试

定义描述交通工具的抽象类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;
}