编程语言
首页 > 编程语言> > 015:看上去好坑的运算符重载 程序设计实习MOOC / 程序设计与算法(三)

015:看上去好坑的运算符重载 程序设计实习MOOC / 程序设计与算法(三)

作者:互联网

确实坑。

分析:

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;
}

 

标签:MOOC,return,int,运算符,MyInt,nVal,重载,程序设计,objInt
来源: https://blog.csdn.net/qq_38975493/article/details/115412401