qq_36374529
qq_36374529
采纳率0%
2016-11-10 00:59 阅读 868

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;

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • shihengzhen101 AlbertS 2016-11-10 02:06

    有没有完整一点的代码

    点赞 评论 复制链接分享
  • qq_36374529 qq_36374529 2016-11-10 02:46

    #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;
    }
    自加的问题已经解决了,但还是不太懂,之前的写法是没有加&,剩下两个问题已经标注了,希望可以解答

    点赞 评论 复制链接分享

相关推荐