浅鱼

记愚蠢的一个夜晚(关于运算符重载)
好久没碰过C++了,被学妹问了个运算符重载的问题,结果对着程序好久才找到原因,只能说我可能已经学傻了。。。问题代码...
扫描右侧二维码阅读全文
23
2018/06

记愚蠢的一个夜晚(关于运算符重载)

好久没碰过C++了,被学妹问了个运算符重载的问题,结果对着程序好久才找到原因,只能说我可能已经学傻了。。。

问题代码是这个:

#include <iostream>

using namespace std;

struct num{
    int zi;
    int mu;
};

struct num operator + (struct num n2){
    struct num n;
    n.zi = n.zi + n2.zi;
    n.mu = n.mu + n2.mu;
    return n;
}

int main()
{
    struct num n1,n2,m;
    n1.zi = 1;
    n1.mu = 2;
    n2.zi = 1;
    n2.mu = 3;
    m = n1 + n2;      //这里为什么没有操作符重载
    cout<<m.zi<<endl<<m.mu;
    return 0;
}

其实原因很简单,因为运算符重载只有两种方式:

通过“友元函数”或者“类成员函数”

下面复习一下这两种方式吧。

1.友元函数重载操作符的格式:

class 类名
{
    friend 返回类型 operator 操作符(形参表);
};
//类外定义格式:
返回类型 operator操作符(参数表)
{
    //函数体
}

2.类成员函数实现操作符重载的格式

class 类名
 {
 public:
     返回类型 operator 操作符(形参表);
 };
 //类外定义格式
 返回类型 类名::operator 操作符(形参表)
 {
     //函数体
 }
Last modification:June 23rd, 2018 at 01:39 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment