2023.5.24编程一小时打卡

发布时间 2023-05-24 20:15:32作者: 信2211-8李欣垚

一、问题描述:

已知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;
}

二、解题思路:

首先,定义一个父类一个子类,分别定义其构造函数和析构函数还有成员函数,父类中的成员函数和析构函数定义为虚函数,最后在主函数中,定义父类和子类的对象,输出对象在创建和调用函数过程中的顺序。

三、代码实现:

 1 #include <iostream>
 2 #include<string>
 3 #include<iomanip>
 4 using namespace std;
 5 class Horse
 6 {
 7 public:
 8     Horse()
 9     {
10         cout<<"Horse 申请了空间..."<<endl;
11     }
12     virtual void Fly()
13     {
14         cout<<"Just a horse."<<endl;
15     }
16     virtual ~Horse()
17     {
18         cout<<"Horse 释放了空间..."<<endl;
19     }
20 };
21 class Pegasus:public Horse
22 {
23 public:
24     Pegasus():Horse()
25     {
26         cout<<"Pegasus 申请了空间..."<<endl;
27     }
28     void Fly()
29     {
30         cout<<"I can fly!"<<endl;
31     }
32     ~Pegasus()
33     {
34         cout<<"Pegasus 释放了空间..."<<endl;
35     }
36 };
37 int main()
38 {
39     Horse *p1 = new Horse; //输出:Horse 申请了空间...
40     Horse *p2 = new Pegasus; /*  输出两行:
41                                  Horse 申请了空间...
42                                  Pegasus 申请了空间...   
43                      */    
44     cout << endl; 
45     
46     p1->Fly(); //输出:Just a horse.
47     p2->Fly(); //输出:I can fly!
48     cout << endl; 
49     
50     delete p1; //输出:Horse 释放了空间...
51     delete p2;  /* 输出两行:
52                    Pegasus 释放了空间... 
53                    Horse 释放了空间... 
54             */
55     return 0;
56 }