运算符重载
以加法为例:函数名 Time Time::operator+(const Time & time) //一个类类相加的重载运算符
调用时:sum = a+b;如果a、b都是Time类,则等价于sum = a.operator+(b)
重载限制:
1.重载后的运算符至少有一个操作数是用户定义的类型。
2.不能创建新运算符
3.重载后的运算符和原来的运算符具有相同的优先级
非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);
其他类型–>对象
任何接受唯一一个参数的构造函数都可被用作转换函数,讲该类型与参数相同的值转化为类。
如String对象的初始化: string a = “a” 等价于 string a(“a”)
转换函数(对象–>其他类型)
operator typename(){}
转换函数使用注意:转换函数必须是类方法 转换函数不能有指定的返回类型 转换函数不能有参数
显式转换: typename(对象名) (typename)对象名
在转换函数定义时在头部加入explicit作用是在调用转换函数的时候必须以显式的方式进行。