一、问题描述:
已知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 }
标签:24,输出,Horse,函数,Pegasus,2023.5,打卡,include,cout From: https://www.cnblogs.com/lixinyao20223933/p/17426240.html