编程论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

界面工厂编程视频教程广告联系qq1031180668广告位
查看: 606|回复: 0

[c/c++] c++对c语言的扩展-运算符重载初步

[复制链接]
  • ta_mind

    2018-4-24 23:11
  • classn_01: 67 classn_02

    [LV.6]常住居民II

    856

    主题

    1574

    帖子

    3046

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3046

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-1-18 16:16:12 | 显示全部楼层 |阅读模式
    在输出时用到的<<本身在C语言中是位操作中的左移运算符。现在又用用流插入运算符,这
    种一个字符多种用处的现像叫作重载。在 c 语中本身就用重载的现像,比如 & 既表示取地址,
    又表示位操作中的与。*既表示解引用,又表示乘法运算符。只不过c语言并没有开放重载机
    制。
    C++提供了运算符重载机制。可以为自定义数据类型重载运算符。实现构造数据类型也
    可以像基本数据类型一样的运算特性。
    [C++] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    #include <iostream>
    using namespace std;
    struct COMP
    {
    	float real;
    	float image;
    };
    COMP operator+(COMP one, COMP another)
    {
    	one.real += another.real;
    	one.image += another.image;
    	return one;
    }
    int main()
    {
    	COMP c1 = { 1, 2 };
    	COMP c2 = { 3, 4 };
    	COMP sum =c1+c2 ; //operator+(c1, c2);
    	cout << sum.real << " " << sum.image << endl;
    	return 0;
    }
    
    

    c++对c语言的扩展-运算符重载初步

    c++对c语言的扩展-运算符重载初步

    perator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。
    示例中重载了一个全局的操作符+号用于实现将两个自定义结构体类型相加。本质是函数的调用。当然这个 COMP operator+(COMP one, COMP another),也可以定义为 COMP
    add(COMP one, COMP another),但这样的话,就只能 COMP sum = add(c1,c2),而不
    能实现 COMP sum = c1 +c2 了。
    这里只是初步了解运算符的重载,后续会深入了解。



    不积跬步,无以至千里
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|Archiver|小黑屋|sitemap|编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号-2 )

    GMT+8, 2018-5-25 03:09 , Processed in 0.171875 second(s), 33 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

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