class Age	{	public:	Age& operator++() //前置++	{	++i;	return *this;	}	const Age operator++(int) //后置++ {	Age tmp = *this;	++(*this); //利用前置++	return tmp;	}	Age& operator=(int i) //赋值操作	{	this->i = i;	return *this;	}	private:	int i;	};
从上述代码,我们可以看出前置++和后置++,有3点不同:
返回类型不同形参不同代码不同效率不同
返回值类型的区别
前置++的返回类型是Age&,后置++的返回类型const Age。这意味着,前置++返回的是左值,后置++返回的是右值。(关于左值和右值的讨论很多,见本文下面)
左值和右值,决定了前置++和后置++的用法。
int main()	{	Age a;	(a++)++; //编译错误	++(a++); //编译错误	a++ = 1; //编译错误	(++a)++; //OK	++(++a); //OK	++a = 1; //OK	}