设为首页收藏本站
查看: 201|回复: 3

4.《剑指C++》之从C到C++(4)

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:01
  • 签到天数: 760 天

    [LV.10]以坛为家III

    发表于 2020-6-10 09:47:17 | 显示全部楼层 |阅读模式
    本帖最后由 御天行 于 2020-6-10 15:34 编辑

    ======《剑指C++系列》:总目录======

    本讲主要介绍:运算符重载初探
    C++认为,一切操作符都是函数。函数是可以重载的(并不是所有运算符都是可以重载的)
    前面用到的运算符<<,本身在 C 语言中,是位操作中的左移运算符。现在又用作流插入运算符,这种一个运算符多种用处的现像叫作运算符重载
    C++提供了运算符重载机制。可以为自定义数据类型重载运算符。实现构造数据类型也可以像基本数据类型一样的运算特性。
    比如,我们可以轻松的实现基本数据类型 3 + 5 的运算,却不能实现两个结构体类型变量相加的运算。通过重载运算符,我们可以实现该操作,如下:
    1. #include<iostream>
    2. using namespace std;

    3. //定义一个结构体,结构体成员中含有两个变量,分别表示数学中的实数(real)与虚数(image)
    4. struct Comp{
    5.     float real;
    6.     float image;
    7. };

    8. //重载运算符关键字:operator + 需重载的符号('+'、'-'、'*'、'/'、'='等)
    9. Comp operator+(Comp one, Comp another){
    10.     one.real += another.real;
    11.     one.image += another.image;
    12.    
    13.     return one;
    14. }

    15. int main(void){
    16.     Comp c1= {1,2};
    17.     Comp c2= {3,4};
    18.     Comp sum = c1+c2;    //经过重载运算符,该语句本质上就是调用函数operator+(c1,c2);
    19.                                          //重载之后,使对象能够同普通变量一样参加运算,用起来方便
    20.     cout<<sum.real<<" "<<sum.image<<endl;
    21.    
    22.     return 0;
    23. }
    复制代码


    示例中重载了一个全局的操作符'+'号用于实现将两个自定义结构体类型相加。本质是函数的调用。重载运算符的好处就在于,我们可以通过内置的接口,结构体对象、类对象等复杂类型能同普通变量一样通过加、减、乘、除、赋值等运算符进行操作(例:c3=c1+c2),而不必使用类似于add(c1,c2)这样的调用函数的形式,用起来极为方便。

    关于运算符重载,在这里仅做简单介绍,之后的文章里,会对其进行深入分析。

    上一篇:3.C++的函数重载机制
    下一篇:5.函数的默认参数

    点评

    大哥,你的时间真多,好羡慕~~  发表于 2020-6-10 18:48
  • TA的每日心情
    开心
    昨天 12:21
  • 签到天数: 1463 天

    [LV.10]以坛为家III

    发表于 2020-6-10 12:38:56 | 显示全部楼层
    感谢楼主分享,楼主辛苦了,期待您的更多精彩!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2020-7-1 10:37:10 来自手机 | 显示全部楼层
    学习了 感谢楼主分享
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐 上一条 /3 下一条

    红盟社区--中国红客联盟 

    Processed in 0.078413 second(s), 20 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    Powered by HUC © 2001-2017 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

    快速回复 返回顶部 返回列表