C++试题精选----虚函数与多态----NO.2
Posted 敲代码的xiaolang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++试题精选----虚函数与多态----NO.2相关的知识,希望对你有一定的参考价值。
希望c++的入门者们闲暇之余,可以浏览思考,有什么问题欢迎留言或者私信。
虚函数与多态----NO.2
eg.定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。具体要求如下:
(1) 编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数;
(2) 由车(vehicle)基类派生出自行车(bicycle)类、汽车类(motorcar),从bicycle类和motorcar类派生出摩托车类(motorcycle),它们都有Run、Stop等成员函数。
(3) 在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。
(4) 分别用vehicle类型的指针来调用几个对象的成员函数,看看能否成功(提示:把Run、Stop定义为虚函数)。
#include<iostream>
using namespace std;
class vehicle
{
public:
virtual void Run()
{
cout<<"这个车进行跑的操作"<<endl;
}
virtual void Stop()
{
cout<<"这个车进行停止的操作"<<endl;
}
};
class bicycle:public vehicle
{
public:
virtual void Run()
{
cout<<"这个自行车进行跑的操作"<<endl;
}
virtual void Stop()
{
cout<<"这个自行车进行停止的操作"<<endl;
}
};
class motorcar:public vehicle
{
public:
virtual void Run()
{
cout<<"这个汽车进行跑的操作"<<endl;
}
virtual void Stop()
{
cout<<"这个汽车进行停止的操作"<<endl;
}
};
class motorcycle:public bicycle,public motorcar
{
public:
virtual void Run()
{
cout<<"这个摩托车进行跑的操作"<<endl;
}
virtual void Stop()
{
cout<<"这个摩托车进行停止的操作"<<endl;
}
};
int main()
{
vehicle Vehicle;
vehicle *p;
p=&Vehicle;
p->Run();
p->Stop();
bicycle Bicycle;
p=&Bicycle;
p->Run();
p->Stop();
motorcar Motorcar;
p=&Motorcar;
p->Run();
p->Stop();
motorcycle Motorcycle;
// p=&Motorcycle;
cout<<"在派生出的摩托车类里无法调用"<<endl;//由运行结果,无法成功
// p->Run();
// p->Stop();
bicycle *p1;
motorcar *p2;
p1=&Motorcycle;
p2=&Motorcycle;
p1->Run();
p1->Stop();
p2->Run();
p2->Stop();
return 0;
}
运行结果
有问题私聊博主或者在下面留言,如果有更好的解法也请留言,欢迎大家讨论,共同进步,一起学习。
“C++是面向对象编程,我也想面向对象编程。”
以上是关于C++试题精选----虚函数与多态----NO.2的主要内容,如果未能解决你的问题,请参考以下文章