C++运算符函数与运算符重载

        运算符重载是计算机语言固有多态性的体现。C++语言进一步拓展了运算符的概念:它不但提供固有的重载,而且还提供重载的手段。这样,程序设计者可以进一步重载某个特定的运算符,赋予它新的含义。
        C++把重载的运算符视为特殊的函数,称为运算符函数。运算符重载就是函数重载的一种特殊情况。与一般重载函数一样,编程系统能够依据使用运算符的不同环境,即参数(操作符)的数量或类型的差异,区分同一运算符的不同含义。
        运算符重载是针对C++中原有运算符进行的,不能通过重载创建出新的运算符。除了(.  .*  ->   ::  ?:)运算符之外,其他运算符都可以重载。由于很多符号是一元运算符和二元运算符公用的(如*既用于间接访问也可以用于两数相乘),为了避免混淆,不得为重载的运算符函数设置默认值,因此在调用时也就不得省略实参。
        除了new的delete这两个较为特殊的运算符外,任何运算符在作为成员函数重载时不得设置为静态成员函数。=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,而且不能针对枚举类型操作数进行重载。
        运算符函数名由运算符前加入关键字operator构成,在声明运算符或调用运算符时都可以用这个名称。因此可以用两种不同的方法调用运算符函数
        (1)作为某个类的成员函数重载了二元运算符+
        c1.operator+(c2)
        (2)+作为该类的非成员函数重载
        operator+(c1,c2)
        作为成员函数重载时第一操作数就是对象本身,并不显式地出现在形参列表中。因此对于一元运算符形参表是空的;对于二元运算符形参表只有一个参数,它代表第二操作数。
        作为非成员函数重载时,由于没有隐含的this指针,因此所有的操作数均出现在形参表中。因此对于一元运算符,形参表中只有一个参数,代表那个唯一的操作数;对于二元运算符,形参表中有两个参数,分别代表第一操作数和第二操作数。
        重载的运算符保持其原有的操作数不变。因此“*”既可以重载为一元运算符,又可以重载为二元二元运算符;但“=”只能重载为二元运算符。重载的运算符还保持其原有的优先级和结合性不变。

参考《全国计算机等级考试二级教程——C++语言程序设计》

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值