0、本章内容:
运算符重载。
友元函数。
重载<<运算符,以便用于输出。
状态成员。
使用rand()生成随机值。
类的自动转换和强制类型转换。
类转换函数。
1、运算符重载:
运算符重载是一种形式的多态。
2、计算时间:一个运算符重载示例:
2.1 添加加法运算符
把运算符放到operator后面。
2.2 重载限制
至少有一个操作数是用户定义的类型。
不能违反运算符原来的句法规则。
不能创建新运算符。
部分运算符不能重载。
部分运算符只能用成员函数重载。
2.3 其他重载运算符
3、友元:
3.1 创建友元
原型声明前加friend关键词。
3.2 常用的友元:重载<<运算符
访问私有类数据成员,必须使用友元函数。
4、重载运算符:作为成员函数还是非成员函数:
不能用时用两种格式的重载。
5、再谈重载:一个矢量类:
5.1 使用状态成员
5.2 为Vector类重载算术运算符
运算符的元数不会改变。
5.3 对实现的说明
5.4 使用Vector类来模拟随机漫步
6、类的自动转换和强制类型转换:
接受一个参数的构造函数可以自动类型转换。
可以用explicit关键词关闭自动类型转换构造函数。
6.1 转换函数
最好使用强制类型转换。
转换函数:operator typeName()。
可以定义同功能的非转换函数来替换转换函数。
6.2 转换函数和友元函数
过多的转换函数容易导致二义性。
7、总结:
null。