欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

015:看上去好坑的运算符重载

程序员文章站 2022-03-14 09:58:27
...

确实坑。

分析:

1. MyInt objInt(n); //构造函数,已定义

2. objInt-2-1-3;  //需重载"-",补。

3. cout << Inc(objInt); //已定义Inc函数, 坑:1.将Inc定义为友元(错)。2.需要重载"()"(错)。3.重载Inc函数(yes。。。)

以下是完整代码:

#include <iostream>
using namespace std;
class MyInt {
    int nVal;
public:
    MyInt(int n) { nVal = n; }

// 在此处补充你的代码
    MyInt &operator-(int i) {
        nVal -= i;
        return *this;
    }
    friend int Inc(const MyInt & my){
        return my.nVal + 1;
    }

};

int Inc(int n) {
    return n + 1;
}
int main () {
    int n;
    while(cin >>n) {
        MyInt objInt(n);
        objInt-2-1-3; //需重载"-"
        cout << Inc(objInt);
        //已定义Inc函数,坑:1.将Inc定义为友元(错)。2.需要重载"()"(错)。3.重载Inc函数()
        cout <<",";
        objInt-2-1;
        cout << Inc(objInt) << endl;
    }
    return 0;
}