C++之运算符重载(二元)

2021-06-22 14:03

阅读:298

标签:soscw   第一个   默认   更改   img   设定   返回值   函数重载   技术分享   

 

一、加号+

1.成员函数重载

技术分享图片

技术分享图片

技术分享图片

 

 

2.友元函数重载

技术分享图片

技术分享图片

技术分享图片

 

 

二、输出符号

技术分享图片

技术分享图片

技术分享图片

 

 

三、索引符号 [ ]

技术分享图片

技术分享图片

技术分享图片

 

四、补充说明

1.《二元运算符重载》课程评论:

(一)为什么

如果在类中定义非友元成员函数,默认第一个参数默认会传入this*指针,这时就无法实现cout在前

因为二元运算符中的调用格式是 参数一 运算符 参数二

这也就是为什么 加号运算符可以使用非友元成员函数,因为参数一是一个this*指针,参数二是其它对象

假设定义为非友元成员函数,那么第一个参数系统默认为this*(且无法更改),第二个参数是cout

那么调用格式就变成了 coor

(二)
这里对于输出运算符重载讲得一般,当时课程上学习的时候,这里返回值为out是有原因的。

cout

上面这个例子中,第一次重载

第二次重载的时候是将这个cout

 


2.《二元运算符重载》课程评论:

来吧!让我给您们解释一下为什么

简而言之:

对于友元重载没有this指针指向当前对象的!这个可以从单目运算符重载时返回形参而不能返回this可知!

所以必须为参数一+运算符+参数二出现的表达式才能用友元!

二元运算符的成员函数重载,或一元运算符成员函数重载,默认在符号前有个this指针,指向当前对象的!

这也就为什么,二元重载还需有一参,一元重载不用参!

好了~~~这就很好解释,若

 

 

3.对于输出运算符“

 


4.索引运算符“[]”不能采用友元函数重载 原因??

友元函数重载的第一个参数可以是成员函数重载中的this指针也可以是其他的值,可是索引运算符的第一个参数必须是this指针,

因为只有第一个参数是this指针才能够传入索引,才能够使得这个索引所表达的是当前这个对象当中的成员

 

C++之运算符重载(二元)

标签:soscw   第一个   默认   更改   img   设定   返回值   函数重载   技术分享   

原文地址:https://www.cnblogs.com/Tang-tangt/p/9678276.html


评论


亲,登录后才可以留言!