C/C++教程

More Effective C++ Item6 自增自减运算符重载

本文主要是介绍More Effective C++ Item6 自增自减运算符重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

对于int类型变量a可以如下操作

++a;
a++;
--a;
a--;

++--分别都有前置式(操作符在前)、后置式(操作符在后)
对于自定义类型,++--的重载需要区分前置式和后置式,如下

class Element
{
public:
	Element(int value) :value_(value) {}

	Element& operator++()
	{
		++value_;
		return *this;
	}

	const Element operator++(int)
	{
		Element cache = *this;
		++value_;
		return cache;
	}

	Element& operator--()
	{
		--value_;
		return *this;
	}

	const Element operator--(int)
	{
		Element cache = *this;
		--value_;
		return cache;
	}

private:
	int value_;
};

Element a(0);
auto b = a++;   // b.value_ = 0; a.value_ = 1
auto c = ++++a; // c.value_ = 3; a.value_ = 3
auto d = a++++; // compile error

前置式返回的是引用&,是左值;
后置式返回的是常量对象,是右值,同时带有一个不使用的int参数。

这篇关于More Effective C++ Item6 自增自减运算符重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!