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

看上去好坑的运算符重载

程序员文章站 2022-03-26 16:52:47
...

看上去好坑的运算符重载

2021春季学期面向对象程序设计第五、六周课外练习

描述

程序填空

#include <iostream> 
using namespace std;
class MyInt 
{ 
    int nVal; 
    public: 
    MyInt( int n) { nVal = n ;}
// 在此处补充你的代码
}; 
int Inc(int n) {
    return n + 1;
}
int main () { 
    int n;
    while(cin >>n) {
        MyInt objInt(n); 
        objInt-2-1-3; 
        cout << Inc(objInt);
        cout <<","; 
        objInt-2-1; 
        cout << Inc(objInt) << endl;
    }
    return 0;
}

输入

多组数据,每组一行,整数n

输出

对每组数据,输出一行,包括两个整数, n-5和n - 8

输入样例

20
30

输出样例

15,12
25,22

解析

MyInt定义了一个类,objInt是其实例化的一个变量,在objInt-2-1-3这个操作中,需要实现一个减法的功能,所以要在MyInt这个类中重载-这个运算符号,即:

MyInt& operator -(int a)
    {
        nVal -= a;
        return *this;
    }

其次,在Inc(int n)这个函数中,传入的变量是 int类型,而主函数中cout<< Inc(objInt)传入的是MyInt类型,所以还要在MyInt这个类中定义从MyIntint的强制类型转换,即:

operator int()
    {
        return nVal;
    }

最后,完整代码为:

#include <iostream> 
using namespace std;
class MyInt 
{ 
    int nVal; 
    public: 
    MyInt( int n) { nVal = n ;}
// 在此处补充你的代码
    MyInt& operator -(int a)
    {
        nVal -= a;
        return *this;
    }
    operator int()
    {
        return nVal;
    }
}; 
int Inc(int n) {
    return n + 1;
}
int main () { 
    int n;
    while(cin >>n) {
        MyInt objInt(n);
        objInt-2-1-3; 
        cout << Inc(objInt);
        cout <<","; 
        objInt-2-1; 
        cout << Inc(objInt) << endl;
    }
    return 0;
}


相关标签: OUC OJ