/*3) 定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,
由此派生出自行车(bicycle)类,汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,
汽车(motorcycle)类有座位数(SeatNum)等属性。从bicycle和motorcycle派生出摩托车(Motorcar)类, 在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle 设置为虚基类,会有什么问?编程实验及分析原因。*/ #include
vehicle(int MaxSpeed0,int Weight0):MaxSpeed(MaxSpeed0),Weight(Weight0){} int MaxSpeed,Weight; void Run(){cout<<\ void Stop(){cout<<\ void show(){cout<<\ cout<<\ };
class bicycle:virtual public vehicle{ public: bicycle(int MaxSpeed0,int Weight0,int Height0):vehicle(MaxSpeed0,Weight0){Height=Height0;} int Height;
void show(){cout<<\};
class motorcycle:virtual public vehicle{ public: motorcycle(int MaxSpeed0,int Weight0,int SeatNum0):vehicle(MaxSpeed0,Weight0){SeatNum=SeatNum0;} int SeatNum; void show(){cout<<\};
class Motorcar:public bicycle,public motorcycle{ public: Motorcar(int MaxSpeed0,int Weight0,int Height0,int SeatNum0):vehicle(MaxSpeed0,Weight0),
bicycle(MaxSpeed0,Weight0,Height0),motorcycle(MaxSpeed0,Weight0, SeatNum0){} int MaxSpeed0;int Weight0; void show(){vehicle::show();motorcycle::show();bicycle::show();} };
void main(){ Motorcar m(1,2,3,4); m.show(); m.Run(); m.Stop(); return ; }
实验五
/*1) 定义Point类,有坐标x,y两个私有成员变量;对Point类重载\(相加)、\(相减)和\(相等)运算符,实现对坐标的改变,
要求用友元函数和成员函数两种方法实现。对Point类重载<<运算符,以使得代码 Point p; cout<
class Point{ public: Point(int x=0,int y=0):x(x),y(y){} Point operator+(const Point &p2) const; Point operator-(const Point &p2) const; Point operator==(const Point &p2) const; void show()const; friend Point operator+(Point &p1,Point &p2); friend Point operator-(Point &p1,Point &p2); friend Point operator==(Point &p1,Point &p2); friend ostream & operator<<(ostream &out,const Point &p);
private: int x,y; };
Point Point::operator +(const Point &p2)const{ return Point(x+p2.x,y+p2.y); }
Point Point::operator -(const Point &p2)const{ return Point(x-p2.x,y-p2.y); }
Point Point::operator ==(const Point &p2)const{ return Point(x==p2.x,y==p2.y); }
Point operator+(Point &p1,Point &p2) { return Point(p1.x+p2.x,p1.y+p2.y); }
Point operator-(Point &p1,Point &p2) { return Point(p1.x-p2.x,p1.y-p2.y); }
Point operator==(Point &p1,Point &p2) { return Point(p1.x==p2.x,p1.y==p2.y); }
ostream & operator<<(ostream &out,const Point &p){ out<<\ return out; }
int main(){ Point p1(8,10),p2(6,3),p3,p(1,2);
cout<<\第一个坐标为:\ cout< /*2) 定义一个车(vehicle)基类,有虚函数Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类, 它们都有Run、Stop等成员函数。在主函数中用不同的方法调用Run、Stop成员函数,观察这些函数的执行结果,思考如何实现动态多态性, 如果Run、Stop没有被定义为虚函数,执行结果会怎样,把结果和分析写入实验报告。*/ #include vehicle(){} virtual void Run() const {cout<<\ virtual void Stop() const {cout<<\ }; class bicycle: public vehicle{ public: void Run() const {cout<<\ void Stop() const {cout<<\}; class motorcar:public vehicle{ public: