运算符重载

在C++内置数据类型中(char,int,float,double等),每一种类型都可进行运算符操作,例如:加减乘除运算。
对于用户自定义的数据类型,只能自己进行运算符重载,赋予它们类似内置数据类型加减乘除等的意义。
相对于函数调用,运算符重载的目的是使程序更容易阅读,书写和理解。
运算符重载虽然好用,但不能随便用,因为运算符重载赋予运算符在不同情况下的不同功能,滥用反而导致混乱。
例如:将*操作符用于地址,将得到存储在这个地址中的值(解引用);但将它用于两个数字时,得到的将是它们的乘积。也可以将加号赋予减号的意义。
我想:对运算符重载一个很好的应用是智能指针(比如shared_ptr),智能指针重载了"->"和".",从而实现和源指针一样的视觉效果。

运算符重载的实现有两种:
1. 类成员函数
   (一元运算符最好用类成员运算符重载)
2. 友元函数
   (输入、输出流是一个很好的例子)
   
当运算符重载为类的成员函数时,函数的参数个数比原来的操作个数要少一个;当重载为类的友元函数时,参数个数与原操作数个数相同。
原因是:
重载为类的成员函数时,如果某个对象使用重载了的成员函数,自身的数据可以直接访问,就不需要再放在参数表中进行传递,少了的操作数就是该对象本身。
而重载为友元函数时,友元函数对某个对象的数据进行操作,就必须通过该对象的名称来进行,因此使用到的参数都要进行传递,操作数的个数就不会有变化。 

以前
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值