• C++-PTA-马会飞


    已知Horse类是Pegasus类的父类,根据以下主函数完善程序内容,以实现规定的输出。不允许改变主函数的内容。

    int main()
    {
        Horse *p1 = new Horse; //输出:Horse 申请了空间...
        Horse *p2 = new Pegasus; /*  输出两行:
                                     Horse 申请了空间...
                                     Pegasus 申请了空间...   
                              */    
        cout << endl; 
        
        p1->Fly(); //输出:Just a horse.
        p2->Fly(); //输出:I can fly!
        cout << endl; 
        
        delete p1; //输出:Horse 释放了空间...
        delete p2;  /* 输出两行:
                       Pegasus 释放了空间... 
                       Horse 释放了空间... 
                */
        return 0;
    }

    输入格式:

    输出格式:

    根据样例格式输出。

    输入样例:

    在这里给出一组输入。例如:

    输出样例:

    在这里给出相应的输出。例如:

    Horse 申请了空间...
    Horse 申请了空间...
    Pegasus 申请了空间...
    
    Just a horse.
    I can fly!
    
    Horse 释放了空间...
    Pegasus 释放了空间...
    Horse 释放了空间...

    第一版的代码是:

    #include <iostream>
    using namespace std;
    class Horse
    {
    public:
        Horse(){cout<<"Horse 申请了空间..."<<endl;}
        void Fly()
        {cout<<"Just a horse."<<endl;}
        ~Horse(){cout<<"Horse 释放了空间..."<<endl;}
    };
    
    class Pegasus:public Horse
    {
    public:
        Pegasus()
        {  cout<<"Horse 申请了空间..."<<endl;
            cout<<"Pegasus 申请了空间..."<<endl;}
        void Fly()
        {cout<<"I can fly!"<<endl;}
        ~Pegasus(){cout<<"Pegasus 释放了空间..."<<endl;}
    };
    int main()
    {
        Horse *p1 = new Horse; //输出:Horse 申请了空间...
        Horse *p2 = new Pegasus; /*  输出两行:
                                     Horse 申请了空间...
                                     Pegasus 申请了空间...
                                  */
        cout << endl;
        
        p1->Fly(); //输出:Just a horse.
        p2->Fly(); //输出:I can fly!
        cout << endl;
        
        delete p1; //输出:Horse 释放了空间...
        delete p2;  /* 输出两行:
                       Pegasus 释放了空间...
                       Horse 释放了空间...
                */
        return 0;
    }

    但是这样的输出结果为

    Horse 申请了空间...
    Horse 申请了空间...
    Horse 申请了空间...
    Pegasus 申请了空间...
    
    Just a horse.
    Just a horse.
    
    Horse 释放了空间...
    Horse 释放了空间...

    “i can fly ”这行不对 以及“ Horse 申请了空间...” 多了一行

    第二版改为

    #include <iostream>
    using namespace std;
    class Horse
    {
    public:
        Horse(){cout<<"Horse 申请了空间..."<<endl;}
        virtual void Fly()
        {cout<<"Just a horse."<<endl;}
        virtual ~Horse(){cout<<"Horse 释放了空间..."<<endl;}
    };
    
    class Pegasus:public Horse
    {
    public:
        Pegasus(){
        cout<<"Pegasus 申请了空间..."<<endl;}
        void Fly()
        {cout<<"I can fly!"<<endl;}
        ~Pegasus(){cout<<"Pegasus 释放了空间..."<<endl;}
    };
    int main()
    {
        Horse *p1 = new Horse; //输出:Horse 申请了空间...
        Horse *p2 = new Pegasus; /*  输出两行:
                                     Horse 申请了空间...
                                     Pegasus 申请了空间...
                                  */
        cout << endl;
        
        p1->Fly(); //输出:Just a horse.
        p2->Fly(); //输出:I can fly!
        cout << endl;
        
        delete p1; //输出:Horse 释放了空间...
        delete p2;  /* 输出两行:
                       Pegasus 释放了空间...
                       Horse 释放了空间...
                */
        return 0;
    }

    即可

    关于virtual的用法-https://www.cnblogs.com/weiyouqing/p/7544988.html

  • 相关阅读:
    Leetcode No.108 Convert Sorted Array to Binary Search Tree(c++实现)
    Leetcode No.88 Merge Sorted Array(c++实现)
    Leetcode No.66 Plus One(c++实现)
    pandas数据排序(series排序 & DataFrame排序)
    pandas的settingwithWaring报警
    pandas对缺失值的处理
    pandas的数据统计函数
    pandas 新增数据列(直接赋值、apply,assign、分条件赋值)
    pandas数据查询(数值、列表、区间、条件、函数)
    pandas数据读取(DataFrame & Series)
  • 原文地址:https://www.cnblogs.com/loglian/p/12803241.html
Copyright © 2020-2023  润新知