且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

C/C++---车类的继承与派生(虚基类)

更新时间:2022-08-12 19:36:32

【问题描述】
声明一个车(vehicle)基类,具有MaxSpeed,Weight等成员变量,Run,Stop等成员函数,其中Run函数输出“Run”,Stop函数输出“Stop”。

并由此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。

再从bicycle类和motorcar类派生出摩托车(motocycle)类。

在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。主函数如下,请勿改动:

int main(){undefined

motocycle a;

a.Run();

a.Stop();

return 0;

}

调试过程中,你是否看到了error: request for member ‘Run’ is ambiguous。请问这句话怎么翻译?

【样例输出】

Run

Stop

代码如下

include

using namespace std;

class vehicle
{
private:

int MaxSpeed, Weight;

public:

void Run() { cout<<"Run"<<endl;}
void Stop() { cout<<"Stop"<<endl;}

};

class bicycle : virtual public vehicle
{
private:

int height;

};

class motorcar : virtual public vehicle
{
private:

int SeatNum;

};

class motocycle : public bicycle, public motorcar
{
};

int main()
{

motocycle a;
a.Run();
a.Stop();
return 0;

}