调用运算符与可调用对象定义
1 调用运算符

  当用点运算符访问一个成员函数时,我们是想调用该函数。我们使用调用运算符( () )来调用一个函数。调用运算符是一对圆括号,里面放置实参列表(可能为空)。

item1.isbn()
2 可调用对象

  对于一个对象或一个表达式,如果可以对其使用调用运算符,则称它为可调用对象。可调用对象包含函数、函数指针、重载了函数调用符的类以及Lambda表达式四种。

2.1 函数

// 计算val的阶乘
int fact(int val)
{
    int ret = 1;
    while(val > 1)
        ret *= val--;
    return ret;
}

2.2 函数指针

// 函数:比较两个string对象的长度
bool lengthCompare(const string &, const string &);

// pf指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型
bool (*pf) (const string &, const string &); // 未初始化

// 赋值
pf = lengthCompare;

 

2.3 重载了函数调用运算符的类

// struct含有一个调用运算符,该运算符负责返回其参数的绝对值
struct absInt()
{
    int operator() (int val) const
    {
        return val < 0 ? -val : val;
    }
}

 

2.4 Lambda表达式

[] (const string &a, const string &b)
    { return a.size() < b.size(); }