运营商使用的朋友函数

来源:互联网 发布:通达信数据文件夹 编辑:程序博客网 时间:2024/05/21 14:07
最佳类跟踪最大值和最小值,它迄今所。我们重载运算符的3倍,所以我们可以把两个极小极大的对象在一起,或添加到该对象的整数。
这个例子产生的结果:
结果:(3,16)
你会注意到,我们增加了mfinal最大值和最小值。
让我们谈一点关于如何“极小极大mfinal = M1 + M2 + 5 + 8 + m + 16”评价。记住运算符+比运算符=更高的优先级,和运营商+评估从左到右,所以M1 + M2评价第一。这是一个调用操作符+(M1、M2),产生的返回值最大(8,15)。然后最小最大(8,15)+ 5评价下。这是一个调用操作符+(最小最大(8,15),5),其产生的返回值最大(5,15)。然后最小最大(5,15)+ 8评价产生极大极小一样(5,15)。然后最小最大(5,15)+ M3的评价产生极大极小(3,15)。最后,最小最大(3,15)+ 16计算最小最大(3,16)。这最后的结果,然后分配给mfinal。
换句话说,该表达式的值为“极大极小mfinal = ((((( M1 + M2)+ 5)+ 8)+ M3)+ 16)”,每一个连续的操作返回该对象,成为以下操作符的左操作数。

另一个有趣的现象是,我们定义的操作符+(int,MinMax)通过调用操作符+(极大极小,int)。这可能比直接实现它的效率略低(由于额外的函数调用,假设你的编译器不能优化函数调用),但保持我们的代码更短,更容易维护,因为它减少了重复代码

我们September 26th by亚历克斯最后修饰,2007年|亚历克斯我们九月29,2016年
Some of the most commonly used算子在C + + are the算法运营商——that is the更算子,算子(+),负(-),乘法算子,算子分裂(*)和(/)。注意that all of the算术运算符都是二元算子——他们把两operands意义——一个我们每个side of the算子。All of these are炉操作工功重in the确切相同的方式。
它原来that there are three different ways to超载运营商:成员函数的方式,the朋友功能的方式,与正常功能的方法。我们第一次显示你的朋友(the功能是更直观的方式,因为二元算子for most)and the正常功能的方法。在以后的课程,我们将成员函数(cover the way to use and discuss当each in更多细节)。
overloading运营商使用的朋友函数
consider the following平凡类:
1
2
3
4
5
6
7
8
9
级分
{
private:
int m _美分;
观众:
M(int美分美分美分美分)_ = {;}
getcents(){ return const int m _美分;}
};
The following example shows how to过载运算符(+)in order to add两美分的对象在一起。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# include iostream > <
级分
{
private:
int m _美分;
观众:
M(int美分美分美分美分)_ = {;}
+添加美分美分/使用朋友函数
朋友分算子+(const美分和C1,C2和const美分);
getcents(){ return const int m _美分;}
};
注:此功能/ is not a member function!
操作员+(const美分美分和C1,C2和const美分)
{
/ / use the美分构造函数和操作员+(int,int)
我们可以访问/ M _美分直接因为这是朋友函数
Return美分(c1.m + c2.m _ _美分美分);
}
(int手)
{
分cents1(6);
分cents2(8);
分centssum = cents1 + cents2;
输出“I have”centssum.getcents)<(<“美分。”< std::例子;
返回0;
}
结果:本生产
我14美分。
overloading算子(+)是最简单的,你有declaring算子函数称为+,给它的两个参数型of the operands我们想添加一个适当的返回类型,采摘,然后写功能。
in the case of our美分对象,实施我们的操作员+()函数是非常简单的。First,the参数类型:in this version of运算符+,我们要添加两美分的对象在一起,所以我们的功能将对象型两美分。第二,the Return型+ is going to our算子:Return a result of类型分,所以这是我们的返回类型。
最后,执行:添加两美分的对象在一起,我们真的需要加the M _ from each美分美分成员对象。因为我们的功重operator()function is +朋友of the class,we can access the M _美分member of our参数直接。also,因为我_美分是一个整数,与C + +知道how to add integers together using the内置版本of the更算子that作品以及Integer operands,we can simply use the + to do the增算子。

1 0
原创粉丝点击