经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C++ » 查看文章
调用运算符与可调用对象
来源:cnblogs  作者:天官赐福  时间:2021/5/6 18:03:43  对本文有异议

1 调用运算符

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

  1. item1.isbn()

2 可调用对象

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

2.1 函数

  1. // 计算val的阶乘
  2. int fact(int val)
  3. {
  4. int ret = 1;
  5. while(val > 1)
  6. ret *= val--;
  7. return ret;
  8. }

2.2 函数指针

  1. // 函数:比较两个string对象的长度
  2. bool lengthCompare(const string &, const string &);
  3. // pf指向一个函数,该函数的参数是两个const string的引用,返回值是bool类型
  4. bool (*pf) (const string &, const string &); // 未初始化
  5. // 赋值
  6. pf = lengthCompare;

 

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

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

 

2.4 Lambda表达式

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

 3 谓词

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

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

 

原文链接:http://www.cnblogs.com/tgcf/p/14688524.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号