我有以下代码:
class Array
{
public:
int aaa;
Array():aaa(1){}
void print()
{
cout << aaa << endl;
}
Array& operator++()
{
aaa++;
return *this;
}
Array operator++(int)
{
Array a(*this);
aaa++;
return a;
}
};
我有一些问题如下:
为什么前缀返回引用而后缀返回对象?在 C++ Primer 一书中,作者只解释了“
For consistency with the built-in operators
”。然后,我测试了代码:
数组 ar;
(ar++).print(); // print 1 ar.print(); // print 2
输出正是我所期望的。现在我将重载后缀函数中的代码更改为:
Array operator++(int)
{
Array a(*this);
a.aaa++; // changed this
return a;
}
我调用了测试代码:
Array ar;
(ar++).print(); // this prints 2
ar.print(); // this prints 1
为什么我会得到这样的结果?