|
发表于 2013-2-19 08:27:09
|
显示全部楼层
运算符提供了一种比函数调用更“高级”的抽象,使程序员可以数学表达式来表达自己的思想,但本质上运算符效果和函数是一样的,比如:
对class Complex{ ... };
Complex a,b,c;
a = b+c;也可以实现为a = Add(a,b);
观察上述两式区别,我们知道要实现运算符+只要将该运算符映射为某个函数,C++规定,该函数的名字叫做operator+
所以b+c实际就是operator+(b,c)为了实现该语义,我们要写个函数
Complex operator+( const Complex&a, const Complex&b);来说明如何实现加法的语义。
对于双目运算符,b+c除了可以理解为operator+(b,c)外,还可以理解为b.operator+(c);如过这样实现的话,operator+就应该是对象b 的一个成员函数,并且它只有一个参数(因为在b.operator+(c);中,另一个参数总是出现在.的左边)我们把最左边的操作数称为左操作数,不是最左边的操作数称为右操作数。
接下来,再看下其它的双目运算符,如:
(1) a<b ;可以理解为operator<(a,b);也可以理解为a.operator<(b)
(2) cout<<a;可以理解为operator<<(cout,a);也可以理解为cout.operator<<(a)但因为cout是ostream类,我们不能向该类增加成员函数,故这种表示不可实现。
还有很多其它内容,相信看了以上的简单描述后你再去看书应该能明白很多。
|
|