2023.5.24编程一小时打卡
一、问题描述:
已知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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统