实验六
1.实验要求
(1)定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。
(2)定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。
2. 实验内容及实验步骤
(1) 编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point& operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1.cpp。
(2) 编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。
3. 源程序
Lab8_1
#include
using namespace std; class Point{ public:
Point(int X,int Y): _x(X),_y(Y){} Point operator++(); Point operator++(int); Point operator--(); Point operator--(int); void Putout() const; private:
int _x,_y; };
void Point::Putout() const{
cout<<\}
Point Point:: operator++(){ _x++; _y++;
return *this; }
Point Point::operator++(int){ ++_x;++_y; return *this; }
Point Point::operator--(){ _x--; _y--;
return *this; }
Point Point::operator--(int){ --_x; --_y;
return *this; }
int main(){
Point A(6,7);
cout<<\ (A++).Putout(); cout<<\ (++A).Putout(); cout<<\ (A--).Putout(); cout<<\ (--A).Putout(); return 0; }
运行结果
Lab8_2
1)在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数。 #include
void Run(){cout<<\基类Vehicle的Run函数调用\ void Stop(){cout<<\基类Vehicle的Stop函数调用\};
class bicycle :public Vehicle { public:
void Run(){cout<<\派生类bicycle的Run函数调用\ void Stop(){cout<<\派生类bicycle的Stop函数调用\};
class motorcar :public Vehicle {
public:
void Run(){cout<<\派生类motorcar的Run函数调用\ void Stop(){cout<<\派生类motorcar的Stop函数调用\};
class motorcycle :public bicycle,public motorcar {
public:
void Run(){cout<<\派生类motorcycle的Run函数调用\ void Stop(){cout<<\派生类motorcycle的Stop函数调用\};
int main(){ Vehicle V; bicycle B; motorcar M; motorcycle Mc; V.Run(); V.Stop(); B.Run(); B.Stop(); M.Run(); M.Stop();