C++运算符重载还有类的默认构造函数的问题

定义了一个类叫Integer,只有一个私有成员value,然后要实现前置后置自加还有插入运算符重载。
前置自加内容是
Integer i;
value ++;
I.setValue(value);
return i;
这里我也想直接写成return Integer(value++);可是编译不通过。
然后插入运算符重载是
output <<value ;
return output;这两部分功能单独实现没有问题,但是放到一起用就不行了cout<<++i<<endl;想问大神怎么改。还有就是怎么实现Integer i=20;i+=20;

c++

2个回答

有没有完整一点的代码

qq_36374529
qq_36374529 完整的代码贴到斜边了,希望你可以解答一下
3 年多之前 回复

#include
using namespace std;
class Integer {
public:
Integer() { value = 0;}
Integer( int v) { value = v;}
int getValue();
void setValue( int);
Integer( Integer& i) { value= i.getValue();}
Integer operator + ( Integer&);
friend ostream& operator <<( ostream&, Integer);
Integer& operator ++();
Integer& operator ++(int);
private:
int value;
};

int Integer::getValue() {
return value;
}
//加法重载
Integer Integer::operator +(Integer& i2) {
Integer i;
i.setValue( value + i2.getValue());
return i;
}

void Integer::setValue(int v) {
value = v;
}
//插入运算符重载
ostream& operator << (ostream& output,Integer i){
output << i.getValue();
return output;
}
//前置自加
Integer& Integer::operator ++(){
value++;
// Integer i;
// i.setValue(value);
return *this;
}
//后置自加
Integer& Integer::operator ++(int){
Integer i;
i.setValue(value);
++value;
return i;

}

int main()
{
Integer i1(10);
Integer i2=24;//问题一
Integer i3(0);
cout << ++i1 << endl;
cout << i2++ << endl;
i3 = i1 + i2;
cout << i3 << endl;
i3.operator +=10;//问题二
cout << i3 << endl;
return 0;
}
自加的问题已经解决了,但还是不太懂,之前的写法是没有加&,剩下两个问题已经标注了,希望可以解答

qq_36374529
qq_36374529 那可能是编译器不支持,我回头换个试试
3 年多之前 回复
shihengzhen101
AlbertS 回复qq_36374529: 没问题啊,Integer i2=24调用的Integer( int v) { value = v;}这个函数
3 年多之前 回复
qq_36374529
qq_36374529 试了,然后Integer i2;i2=24;这样子可以,如果写到一起,Integer i2=24;就不可以了。实现的方法是Integer& operator =(int v){ value =v;return *this ;}
3 年多之前 回复
shihengzhen101
AlbertS 你实现一下Integer operator = ( int n);函数
3 年多之前 回复
qq_36374529
qq_36374529 这个,其实+=那里解决了,就剩i2=24;没解决了
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问