64,643
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
/*交通工具*/
class TrafficTools
{
public:
TrafficTools(int max)
{
Max = max;
}
virtual ~TrafficTools()
{
} //析构函数使用虚函数,可以防止new出来的对象释放完全、造成内存泄露
virtual void show() = 0; //显示交通工具
virtual void run() = 0;
virtual int GetMax() = 0;
protected:
int Max; //最大载数
};
class Vehicle: public TrafficTools
{
public:
Vehicle(int speed,int max) :TrafficTools(max)
{
SpeedVehicle = speed;
}
virtual int GetMax() = 0;
virtual int GetSpeed() = 0;
virtual ~Vehicle()
{
}
virtual void run() = 0;
virtual void show()
{
cout<<"车"<<endl;
}
protected:
int SpeedVehicle; //车速
};
class Boat: public TrafficTools
{
public:
Boat(int speed,int max):TrafficTools(max)
{
SpeedBoat = speed;
}
virtual ~Boat()
{
}
virtual void run() = 0;
virtual int GetMax() = 0;
virtual int GetSpeed() = 0;
virtual void show()
{
cout<<"船"<<endl;
}
protected:
int SpeedBoat; //船速
};
class Car :public Vehicle
{
public:
Car(int speed,int max):Vehicle(speed ,max)
{
}
virtual ~Car()
{
}
virtual void run() {cout<<"小车开动...."<<endl;}
virtual void show(){cout<<"小车"<<endl;}
virtual int GetSpeed()
{
return SpeedVehicle;
}
virtual int GetMax()
{
return Max;
}
};
class Yacht:public Boat //游艇
{
public:
Yacht(int speed,int max) : Boat(speed,max)
{
}
~Yacht()
{
}
virtual void run() {cout<<" 游艇开动..."<<endl;}
virtual void show(){cout<<"游艇"<<endl;}
virtual int GetSpeed()
{
return SpeedBoat;
}
virtual int GetMax()
{
return Max;
}
};
int main()
{
/*new 一个交通工具的指针*/
TrafficTools * obj = new Yacht(2,2);
obj->run();
obj->show();
cout<<"最大载人数:"<<obj->GetMax()<<endl;
cout<<"速度:"<<((Boat *)obj)->GetSpeed()<<endl;
delete obj;
obj = new Car(2,2);
obj->run();
obj->show();
cout<<"最大载人数:"<<obj->GetMax()<<endl;
cout<<"速度:"<<((Vehicle *)obj)->GetSpeed()<<endl;
return 0;
}