C&C++   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了调用运算符与可调用对象大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

1 调用运算符

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

item1.isbn()

2 可调用对象

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

2.1 函数

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

2.2 函数指针

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

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

@H_772_20@//@H_772_20@ 赋值
pf = lengthCompare;

 

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

@H_772_20@//@H_772_20@ 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(); }

 3 谓词

  @H_673_3@谓词是一个可调用的表达式,除此之外,其返回结果必须是一个能用作判断条件的值。标准库算法所使用的谓词分为两类:@H_673_3@一元谓词(只接受单一参数)和@H_673_3@二元谓词(有两个参数)。例如,我们常常使用sort算法对vector进行排序。而sort是重载过的,第二个版本接受第三个参数,该参数就是一个二元谓词。

bool isShorter(const String &s1, const String &s2)
{
    return s1.size() < s2.size();
}

@H_772_20@//@H_772_20@ 谓词是一个返回值为bool的函数
sort(words.begin(), word.end(), isShorter);
@H_772_20@//@H_772_20@ 谓词是一个返回值为bool的Lambda表达式
sort(words.begin(), word.end(), [] (const String &s1, const String &s2)  -> bool { return s1.size() < s2.size();} );

 

大佬总结

以上是大佬教程为你收集整理的调用运算符与可调用对象全部内容,希望文章能够帮你解决调用运算符与可调用对象所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: