C++程序设计语言读书笔记-C11 - 运算符重载

1. 不允许定义新的运算符单词,在运算符集合不够时,你可以采用函数调用的记法形式。

2. 运算符函数的名字是由关键字operator后跟对应的运算符构成的。使用运算符不过是显示调用运算符函数的一种简写形式。例如a+b => a.operator+(b)

3. 二元运算符可以定义为取一个参数的非静态成员函数,也可以定义为取两个参数的非成员函数。如果两者都有定义,那么就按照重载解析来确定究竟应该用哪个定义。

4. 对一元运算符,无论它是前缀的还是后缀的,都可以定义为无参数的非静态成员函数,或者定义为取一个参数的成员函数。

5. 由于历史的偶然性,运算符=(赋值),&(取地址),和,(序列)在应用于类对象时已经有了预先定义的意义。通过将它们定义为私用,就可以使普通用户无法访问这些预定义的意义。

6. 枚举也是用户定义类型,因此可以为它们定义运算符。

7. 成员函数X::operator T(),其中的T是一个类型名,就定义了一个从X到T的转换。

8. 对于一个类型而言,最好是或者依靠用户定义转换,或者依靠用户定义运算符,但不要两者都用。

9. 能合法进行的用户定义隐式转换只有一层。

10. 与类成员函数一样,友元函数也是在将它视为友元的类中明确声明的,因此,它也将像成员函数一样成为类界面的一部分。

11. operator[]的第二个参数(下标)可以具有任何类型,这就使我们可以去定义vector,关联数组等。

12. 一个活动起来像函数的对象称作一个拟函数对象,或者简称为函数对象。

13. 运算符()的最明显,或许也是最重要的应用视为对象提供常规的函数调用语法形式,使它们具有像函数似的行为方式。

14. 重载->的最有用之处是创建所谓的“灵巧指针”,也就是一种行为像是指针的对象,通过它们去访问对象时,可以执行一些附加的操作。

15. 这里用int参数指明这个函数视为++的后缀使用而调用的。这个int绝不会用,该参数根本就是虚设的,只是为了区别前缀和后缀应用。

 

练习题:3, 4, 5

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值