【C++】operator()

关键字 operator 重载运算符(也称“重载操作符”)

operator 是 C++ 的一个关键字,它和运算符(如 ())一起使用,表示一个运算符重载函数,在理解时可将 operator 和待重载的运算符整体(如 operator=)视为一个函数名。

之所以叫“重载”,是由于编译器在实现运算符功能的时候,已经针对这个运算符提供了对于一些基本数据类型的操作支持,只不过现在该运算符所操作的内容变成了我们自定义的数据类型

实现运算符重载的方式通常有以下两种:

运算符重载实现为类的成员函数;
运算符重载实现为非类的成员函数(即全局函数)。

  1. 运算符重载实现为类的成员函数
    在类体中声明(定义)需要重载的运算符,声明方式跟普通的成员函数一样,只不过运算符重载函数的名字是“operator紧跟一个 C++ 预定义的操作符”
    bool operator+ (ListNode *L2){
        return this->val + L2->val;
    }
  1. 运算符重载实现为非类的成员函数(即全局函数)
    对于全局重载运算符,代表左操作数的参数必须被显式指定。
    bool operator+ (ListNode *L1,ListNode *L2){
        return L1->val + L2->val;
    }

可以根据以下因素,确定把一个运算符重载为类的成员函数还是全局函数:

如果一个重载运算符是类的成员函数,那么只有当与它一起使用的左操作数是该类的对象时,该运算符才会被调用;而如果该运算符的左操作数确定为其他的类型,则运算符必须被重载为全局函数;
C++ 要求’=‘、’[]‘、’()‘、’->'运算符必须被定义为类的成员函数,把这些运算符通过全局函数进行重载时会出现编译错误;
如果有一个操作数是类类型(如 string 类),那么对于对称操作符(比如操作符“==”),最好通过全局函数的方式进行重载。

ref: https://blog.csdn.net/liitdar/article/details/80654324

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Z_shsf

来包瓜子嘛,谢谢客官~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值