第五次作业
第五次作业
1.作业简介
当我们在讨论多态性的时候,通常会用重载函数进行举例,而这次发现的问题主要在重载运算符上,因此我希望通过对重载运算符的测试来得出一个结论。
2.作业过程
我们想知道为什么前置运算符和后置运算符会有区别,因此设计了一个实验来证明它:
//
#include "pch.h"
#include <iostream>
using namespace std;
class clock {
public:
clock(int x = 0) :a(x) {}
void show()const { cout << "现在a的值为:" << a << endl; };
clock& operator++() {
a++;
return *this;
}
clock operator++(int) {
clock old = *this;
++(*this);
return old;
}
private:
int a;
};
int main()
{
clock x(0), y(0);
y = x++;
x.show();
y.show();
y = ++x;
x.show();
y.show();
return 0;
}
得到最终结果如预期那样。
3.作业总结
通过这次作业,我能感受到前置和后置运算符的区别,通过x++和y=x++能明显发现当没有另一个同类型的对象接收x的值时,前置++和后置++其实没有区别,最终结果都会+1,但如果设置了一个对象去接收它,那么就会产生加减的顺序问题。前置运算符设置&是为了实现数据的共享和传递,但后置运算符不能设置&,否则将得到与前置运算符一样的结果。