#include <iostream.h>
class autominus
{
float x;
public:
autominus()
{
x=0;
}
autominus(float i)
{
x=i;
}
void operator--()
{
--x;
}
void operator--(int)
{
x-=2;
}
void show()
{
cout<<"x="<<x<<" ";
}
};
void main()
{
autominus p(6);
p.show();
--p;
p.show();
p--;
p.show();
}
//请帮忙分析一下--操作符重载的结果及原因

解决方案 »

  1.   

    ++  --
    这两个操作符,为了让它们的前缀和后缀版本对应不同函数,会做这样的约定:当编译器看到++a是就会自动调用operator++();当看到a++时就会自动调用operator++(int)。为了让这两个函数在内存中有不同的署名(不然会有冲突)才会在operator++(int)中硬性的加一个int参数。这个参数永远不会被使用。