ction与point.operation->()->action等同
<3>否则,代码错误
总结:使用箭头‘->’操作符,必须返回一个指针类型或者自定义了‘->’的类对象。
解引用操作符和箭头操作符赋予了类对象看似指针的行为功能。
11 自增操作符,自减操作符
这些操作符又分为前自增(prefix),后自增(postfix),前自减(prefix),后自减(postfix)
<1>prefix
XXX& operator++();
XXX& operator--();
<2>postfix
为了区分前和后的区别,在后自增,后自减的函数中增加了一个int的参数,编译器提供0做位实参值
XXX operator++(int);
XXX operator--(int);
注意:后自增,后自减的返回值不是引用,因为返回的是一个临时的变量
<3> 显式的调用前缀后缀操作符
XXX.operator++(); //prefix
XXX.operator++(0); //postfix
12 调用操作符和函数对象
<1>
类重载函数调用操作符'()',这样通过控制通过在对象后面加括弧,加参数,可以把类对象当做函数一样使用,我们把定义了调用操作符的类,器对象成为函数对象。
#include
using namespace std;
class Abs
{
public:
Abs(){}
~Abs(){}
int operator ()(int val){return val <0 ? -val : val;}
};
void main()
{
Abs XX;
cout<
<2>函数对象用于标准库算法
标准库中有很多函数,需要提供函数指针或者函数对象作为参数,例如count_if()函数
<3>标准卡中还有很多定义的函数对象
plus
,minus
,multiplies
,greater
...
很多函数对象都是存在
头文件中的函数对象
plus
Add;
cout<