1.C++允许将运算符重载扩展到用户定义的类型
运算符格式一般: type operator op(argument-list)
2.运算符重载的限制:
运算符必须至少有一个操作数是用户定义的类型
不能违反运算符原来的句法规则,如操作数的数量,运算符优先级
不能创建新运算符
不能重载以下运算符:sizeof、.成员运算符、.*成员指针运算符、作用域解析运算符、?:条件运算符、
const_cast;dynamic_cast;reinterpret_cast;static_cast
3.P387总结了那些运算符可以重载和限制
4.友元函数
在类中声明,但不是成员函数,不能使用成员运算符调用;
虽然不是成员函数,但是有相当于成员函数的对类的访问权限
5.通常使用<<运算符重载,要求返回ostream对象
方法:返回值设为 ostream &
6.不能在类外使用friend关键字
7.随机数,可使用rand()函数获取
rand()使用一个初始种子值来获取随机值
使用srand()允许覆盖默认的随机值
time(0)返回当前时间
则调用srand(time(0))就可以了
8.只接受一个参数的构造函数定义了从参数类型到类类型的转换
如Stonewt(double)允许的隐式转换
将Stonewt对象初始化为double
将double值赋给Stonewt对象
将double传递给接受Stonewt参数的函数
返回值被声明为Stonewt的函数试图返回double值
一旦该构造函数加上关键字explicit,不能进行隐式转换,但可以显示转换(强制类型转换)
9.转换函数
将类类型转化为其他类型
operator typeName()
转换函数必须是类的成员函数
不能指定返回值
转换函数不能有参数
11.9编程练习 有时间再做