7-12 马会飞 (10 分)

7-12 马会飞 (10 分)

已知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 
using namespace std;
class Horse{
	public :
	Horse(){
		printf("Horse 申请了空间...\n");
	}
	virtual void Fly(){
		printf("Just a horse.\n");
	}
	virtual ~Horse(){
		printf("Horse 释放了空间...\n");
	}
};
class Pegasus:public Horse{
public :
	Pegasus(){
	printf("Pegasus 申请了空间...\n");	
	}
	void Fly(){
		printf("I can fly!\n");
	}
	~Pegasus (){
		printf("Pegasus 释放了空间...\n");
	}
};
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的析构函数没有加virtual导致无法被覆盖而出错,要多加注意。

 

你可能感兴趣的:(C++,PTA,c++)