++,--均有前缀(Prefix),后缀(Postfix)的形式,分别如下(这时只列举为成员函数方式),
class Foo
{
int n;
Foo(const Foo& other) : n(other.n){}
//对于 ++foo
Foo& operator++()
{
n++;
return (*this);
}
//对于 foo++
Foo& operator++(int)
{
Foo* foo = new Foo(*this);
n++;
return (*foo);
}
//对于 --foo
Foo& operator--()
{
n--;
return (this);
}
//对于 foo--
Foo& operator--(int)
{
Foo* foo = new Foo(*this);
n--;
return (*foo);
}
}
由此可见,++foo 快于 foo++ ,--foo快于foo-- ,即前缀运算效率要稍高于后缀,因为后缀运算有生成新对
象的开销^_^