运算符重载

C++ Primer学习笔记

运算符重载

基本概念

  1. 对于一个运算符函数来说,它或者是类的成员,或者至少含有一个类类型的参数。
  2. 对于一个重载的运算符来说,其优先级和结合律与对应的内置运算符保持一致。
  3. 通常情况下,不应该重载逗号、取地址、逻辑与和逻辑或运算符。
  4. 如果一个类包含下标运算符,则它通常会定义两个版本:一个返回普通引用,另一个是类的常量成员并且返回常量引用。
  5. 箭头运算符永远不能丢掉成员访问这个最基本的含义。
  6. 类定义了调用运算符,则该类的对象称作函数对象。
  7. 默认情况下lambda不能改变它捕获的变量。因此在默认情况下,由lambda产生的类当中的函数调用运算符是一个const成员函数。如果lambda被声明为可变的,则调用运算符就不是const的了。
  8. lambda表达式产生的类不含默认构造函数、赋值运算符及默认析构函数;它是否含有默认的拷贝/移动构造函数则通常要视捕获的数据成员类型而定。
  9. 编译器可以直接使用该引用而无须在lambda产生的类中将其存储为数据成员。
  10. 调用形式指明了调用返回的类型以及传递给调用的实参类型。
  11. 不能(直接)将重载函数的名字存入function类型的对象中。
  12. 一个类型转换函数必须是类的成员函数;它不能声明返回类型,形参列表也必须为空。类型转换函数通常应该是const。
  13. 尽管编译器一次只能执行一个用户定义的类型转换,但是隐式的用户定义类型转换可以置于一个标准(内置)类型转换之前或之后。
  14. 对于类来说,定义向bool的类型转换还是比较普遍的现象。
  15. 向bool的类型转换通常用在条件部分,因此operator bool一般定义成explicit的。
  16. 当调用重载函数时,如果两个(或多个)用户定义的类型转换都提供了可行匹配,则我们认为这些类型转换一样好。在这个过程中,我们不会考虑任何可能出现的标准类型转换的级别。

术语

  1. 直接调用一个重载的运算符函数
  2. 某些运算符不应该被重载
  3. 使用与内置类型一致的含义
  4. 提示:尽量明智地使用运算符重载
  5. 赋值和符合赋值运算符
  6. 选择作为成员或者非成员
  7. 输出运算符尽量减少格式化操作
  8. 输入输出运算符必须是非成员函数
  9. 含有状态的函数对象类
  10. 表示lambda及相应捕获行为的类
  11. 在算法中使用标准库函数对象
  12. 不同类型可能具有相同的调用形式
  13. 标准库function类型
  14. 重载的函数与function
  15. 定义含有类型转换运算符的类
  16. 提示:避免过度使用类型转换函数
  17. 类型转换运算符可能产生意外结果
  18. 显式的类型转换运算符
  19. 转换为bool
  20. 实参匹配和相同的类型转换
  21. 二义性与转换目标为内置类型的多重类型转换
  22. 提示:类型转换与运算符
  23. 重载函数与转换构造函数
  24. 重载函数与用户定义的类型转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值