为了账号安全,请及时绑定邮箱和手机立即绑定

笔记05:C++中的重载运算

标签:
C++

在C++中,当运算符被用于类类型的对象时,它允许我们为其指定新的含义。通过重载的方式,能使表达更加简洁明了。
下面通过一个例子来总结运算符的重载问题:

#include <iostream>#include <typeinfo>#include <string>using namespace std;struct plural   //定义一个复数的结构体。
{
    int rel = 0;    int img = 0;
};
ostream &operator <<(ostream &os, plural &p)//重载输出运算符{
    os << p.rel << "+j" << p.img << endl;    return os;
}

plural operator +(plural &p1, plural &p2)//重载加法运算符{
    plural p3;
    p3.rel = p1.rel + p2.rel;
    p3.img = p1.img + p2.img;    return p3;
}int main(){
    plural p1, p2;
    p1.rel = 1, p1.img = 2;
    p2.rel = 2, p2.img = 5;    cout << p1 + p2 << endl;
    system("pause");    return 0;
}


输出: 3+j7

在以上代码中可以看到,先通过定义一个复数的结构体,确定了其虚部和实部。然后通过对“<<”和“+”运算符的重载来实现复数的输出和加法。

函数类型  operator 运算符(形参表)

{

     函数体

}

重载的基本模板。

  • 在重载的同时还需知道几条基本的原则:

1.不能改变运算符的初始意义。

2.不能改变运算符的参数数目。如重载运算符+时只用一个操作数是错误的。

3.运算符函数不能包括缺省的参数。

4.绝大部分C++运算符都可以重载,除以下的例外:

:: ,.*, .,?:

5.除赋值运算符外,其它运算符函数都可以由派生类继承。

6.运算符重载不改变运算符的优先级和结合性,也不改变运算符的语法结构,即单目、双目运算符只能重载为单目、双目运算符。

7.运算符的重载实际上是函数的重载。编译程序对运算符重载的选择,遵循函数重载的选择原则。当遇到不很明显的运算符时,编译程序将去寻找参数匹配的运算符函数。

8.运算符重载可使程序更简洁,使表达式更直观,增强可读性。但使用不宜过多。



作者:Wayne_Dream
链接:https://www.jianshu.com/p/81d2aadcc18c


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消