大一时写的,很菜
目录
实验目的:
- 掌握运算符重载的方法;
- 学习使用虚函数实现动态多态性。
实验任务:
- 定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“--”(自减)运算符,实现对坐标值的改变。
- 定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。观察虚函数的作用。
- (选做)对实验六中的people类重载“==”运算符和“=”运算符,“==”运算符判断两个people类对象的id属性的大小;“=”运算符实现people类对象的赋值操作。
实验步骤:
- 编写程序定义Point类,在类中定义整型的私有成员变量_x、_y,定义成员函数Point& operator++();Point operator++(int); 以实现对Point类重载“++”(自增)运算符,定义成员函数Point& operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:lab8_1.cpp。
- 编写程序定义一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。在main()函数中定义vehicle、bicycle、motorcar、motorcycle的对象,调用其Run()、Stop()函数,观察其执行情况。再分别用vehicle类型的指针来调用这几个对象的成员函数,看看能否成功;把Run、Stop定义为虚函数,再试试看。程序名:lab8_2.cpp。
参考代码:
//实验7.1 定义Point类,有坐标_x,_y两个成员变量;对Point类重载"++"(自增)、"--"(自减)运算符,实现对坐标值的改变。
#include<iostream>
using namespace std;
class Point {
double x, y;
public:
Point(double xx, double yy) {
x = xx;
y = yy;
}
void show() {
cout << "(" << x << "," << y << ")" << endl;
}
Point& operator ++();//前置++
Point operator ++(int);//后置++
Point& operator --();//前置--
Point operator --(int);//后置--
};
Point::Point& operator ++() {
++x;
++y;
return *this;
}
Point::Point operator ++(int) {
Point old;
old = *this;
return old;
x++;
y++;
}
Point::Point& operator --() {
--x;
--y;
return *this;
}
Point::Point operator --(int) {
Point old;
old = *this;
return old;
x--;
y--;
}
int main() {
Point a(7, 8);
a++;
a.show();
++a;
a.show();
Point b(7, 8);
b--;
b.show();
--b;
b.show();
return 0;
}