在程序设计基础这本书中写的是:
后置自增表达式 Aobject++
成员函数重载的解释为
Aobject.operator++(0)
其中0是一个伪值
#include<iostream>
using namespace std;
class complex
{
private:
double real; //实部
double imag; //虚部
public:
complex &operator ++();
friend void output(complex &c);
friend void intput(complex &c);
};
complex &complex::operator++ ()
{
real=real+1;
imag=imag+1;
}
void output(complex &c)
{
cout<<"c++="<<"("<<c.real<<","<<c.imag<<"i)";
}
void intput(complex &c)
{
cin>>c.real>>c.imag;
}
int main()
{
complex c;
intput(c);
c++;
output(c);
}
在这段代码编译时会提示:
[Error] no 'operator++(int)' declared for postfix '++' [-fpermissive]
编译器是DEVC++,在vs2010下也会警告,是编译器的问题吗
你这句是前置++操作符的重载
C++后置++操作符的重载声明可以在()里面加个int来实现,即:
另外,你的重载操作符也没有return语句,main函数也没return 0;
最好是拷贝构造函数、拷贝赋值运算符都实现下。