运算符重载 const friend

Coder 真的需要自己动手去写代码,而不是仅仅看懂了规则就行的

今天试着写个复杂点的程序,刚开始的一个结构体就就遇到了好多问题。



就拿这个来说吧。

1、首先说运算符重载,形式只有两种:重载为的成员函数 or 重载为类的友元函数。基本数据类型是不需要也无法进行运算符重载的,很简单的道理,我却没想到。

2、接下来上面的x,y,z肯定是类里面的数据成员啦,对应的是 重载为类的成员函数。这种重载的格式是:函数类型 operator 运算符(形参表) {}。

3、下面一种重载形式就是重载为类的友元函数。有2个参数,而重载为类的成员函数只有一个参数,因为另一个参数就是该对象本身。

4、const 修饰变量:对于其他变量没什么说的,对于指针,则可以分为2种:顶层const,常量指针,表示指针本身是个常量;底层const,指向常量的指针,表示所指的对象是个常量。区分:从右向左阅读。

5、const 修饰函数:表示成员函数不会修改类的成员。所以不要在第二个重载函数后面加上const,否则会出现“非成员函数上不允许使用类型限定符”的错误。

6、起初不明白运算符重载,以为第一种声明只适合于vector*scalar的情形,而不适合scalar*vector的情形。实际上,两者都可以。

7、而对于下面的重载定义,要注意形参的顺序。第一个定义中,第一个形参是对象本身,省略没写,第二个参数才是scalar;而若将第二个定义的形参位置对调后,两个定义就相同了,出现这个错误。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值