C++primer 第十四章笔记 初稿

14.1 函数调用运算符

  1. 基本情况

    • 重载的运算符:()
    • 该类的对象为函数对象,可以用作泛型算法的实参
  2. 与lambda表达式的关系

    • lambda表达式中的形参是函数对象的数据成员
    • lambda表达式中的捕获列表是函数对象的形参
    • lambda表达式很方便,当某个操作不经常使用又很简单时,可用lambda来代替函数对象
  3. 标准库中的函数对象

    • 头文件:functional
    • 模式:模板
    • 注意点
      • 在定义优先队列等适配器时,需同时声明队列的默认容器,且不加函数对象的调用运算符
      • 在使用泛型算法时,需加函数对象的调用运算符
  4. 三种表达函数方式的整合

    • 头文件:functional
    • 关键字:function
    • 函数的三种表达方式
      • 普通函数
      • 函数对象
      • lambda表达式
    • 要求:function是模板,必须提供函数的有关信息(签名)

    注:如果因为重载函数而出现二义性,可通过存储函数指针或生成一个lambda表达式完成。

14.2 类型转换运算符

  1. 基本情况

    • 形式:operator type()
    • 要求:可以转换成指针和引用,但不能直接转换成数组或函数。

    注:类型转换不能过度定义

  2. 显示的类型转换

    • 问题:没有定义相关操作的对象,可能通过类型转换产生意想不到的结果。
    • 方法:在定义时注明explicit,表明必须通过静态转换才能实现。
  3. 对于重载的运算符,无论是成员或非成员函数,都在匹配范围内。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值