第五次作业

第五次作业

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,但如果设置了一个对象去接收它,那么就会产生加减的顺序问题。前置运算符设置&是为了实现数据的共享和传递,但后置运算符不能设置&,否则将得到与前置运算符一样的结果。

原文地址:https://www.cnblogs.com/lqk0216/p/11746875.html