水满秋池 2022-05-16 11:26 采纳率: 100%
浏览 46
已结题

关于一个多态性编程测试

定义描述交通工具的抽象类Vehicle,其中包含纯虚函数introduce用于介绍工具的概况。
由Vehicle类派生出两种交通工具——飞机类Plane和火车类Train,再定义普通函数void info(Vehilce * veh),该函数能根据传递的对象正确调用属于所传对象的introduce函数。主函数中,输入字符串飞机或火车,在堆空间上生成相应的对象,传递该对象给info函数,信息显示结束后释放堆空间。

  • 写回答

1条回答 默认 最新

  • 丨秋水丨 2022-05-16 12:16
    关注
    
    #include<iostream>
    #include<string>
    using namespace std;
    class Vehicle
    {
    public:
        virtual void introduce() const = 0;
    };
    
    class Plane : public Vehicle
    {
    public:
        virtual void introduce() const override
        {
            cout << "一架飞机" << endl;
        }
    };
    
    class Train : public Vehicle
    {
    public:
        virtual void introduce() const override
        {
            cout << "一列火车" << endl;
        }
    };
    
    void info(Vehicle* veh)
    {
        veh->introduce();
    }
    
    int main()
    {
        string input;
        while (cin >> input)
        {
            Vehicle* v = nullptr;
            if (input == "飞机")
            {
                v = new Plane();
            }
            else if (input == "火车")
            {
                v = new Train();
            }
            if (v)
            {
                info(v);
                delete v;
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月16日
  • 已采纳回答 5月16日
  • 创建了问题 5月16日

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?