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的主要内容,如果未能解决你的问题,请参考以下文章

C++试题精选----虚函数与多态----NO.1

c++复习笔记——多态详细解析,多态的原理,多态的笔试题

c++ 多态原理详解

c++ 多态原理详解

C++多态

C++之多态性与虚函数