#include<iostream> using namespace std; class vehicle { private: int MaxSpeed; int Weight; public: virtual void Run() { cout<<"Run"<<endl; } virtual void Stop() { cout<<"Stop"<<endl; } }; class bicyle:public vehicle { private: int Height; }; class motorcar:public vehicle { private: int SeatNum; }; class motocycle { }; int main(){ motocycle a; a.Run(); a.Stop(); return 0; }有什么问题
时间: 2024-04-01 13:33:51 浏览: 6
在这段代码中,motocycle类没有继承vehicle类,因此它没有Run()和Stop()方法。在main()函数中,使用motocycle类的对象a调用Run()和Stop()方法是不合法的。如果想要使用Run()和Stop()方法,可以让motocycle类继承vehicle类或者让motocycle类成为vehicle类的派生类之一。
相关问题
#include<iostream> using namespace std; class vehicle { private: int MaxSpeed; int Weight; public: virtual void Run() { cout<<"Run"<<endl; } virtual void Stop() { cout<<"Stop"<<endl; } }; class bicyle:public vehicle { private: int Height; }; class motorcar:public vehicle { private: int SeatNum; }; class motocycle:public bicyle,public motorcar { }; int main(){ motocycle a; a.Run(); a.Stop(); return 0; }有什么问题怎么改
在这段代码中,motocycle类同时继承了bicyle和motorcar类,这样会导致多重继承问题。因为在调用a.Run()和a.Stop()方法时,编译器无法确定应该调用哪个父类的方法。为了解决这个问题,可以使用虚拟继承。
修改代码如下:
```
#include<iostream>
using namespace std;
class vehicle {
private:
int MaxSpeed;
int Weight;
public:
virtual void Run()
{
cout<<"Run"<<endl;
}
virtual void Stop()
{
cout<<"Stop"<<endl;
}
};
class bicyle: virtual public vehicle {
private:
int Height;
};
class motorcar: virtual public vehicle {
private:
int SeatNum;
};
class motocycle:public bicyle,public motorcar {
};
int main(){
motocycle a;
a.Run();
a.Stop();
return 0;
}
```
在bicyle和motorcar类的继承声明中加上virtual关键字,将它们变为虚拟继承,这样motocycle类中就只有一份vehicle类的实例,避免了多重继承问题,同时也保留了bicyle和motorcar类的特性。
补全程序,并写出程序运行结果。 #include <iostream> using namespace std; class Class { public : Class ( int...
补全程序如下:
```
#include <iostream>
using namespace std;
class Class {
public:
Class(int a, int b, int c) {
x = a;
y = b;
z = c;
}
void print() {
cout << "x: " << x << endl;
cout << "y: " << y << endl;
cout << "z: " << z << endl;
}
private:
int x;
int y;
int z;
};
int main() {
Class obj(1, 2, 3);
obj.print();
return 0;
}
```
程序运行结果为:
```
x: 1
y: 2
z: 3
```
程序定义了一个名为 Class 的类,该类包括有参构造函数和一个 print() 函数,构造函数用于对类的私有成员变量进行初始化,print() 函数用于输出类的私有成员变量。在主函数 main() 中,创建了一个名为 obj 的 Class 类对象,构造函数传入三个整数参数 1、2 和 3。最后调用 obj 对象的 print() 函数,输出 obj 对象的私有成员变量 x、y 和 z 的值。