为了实现两个 Time 类对象的加法运算,可以写出如下语句:
所谓重载,就是重新赋予新的含义.运算符重载是将系统中已有的运算符赋予不同的意义.使用运算符重载可以使 C++ 的代码更直观,更易懂,更灵活,使得用户自定义的数据类型以一种更方便,更简洁的方式工作.
Time t1,t2;//定义时间类对象t1,t2
t1=Tadd(t1,t2);//调用函数Tadd()计算两个时间的和
//显然这种调用方式不直观,太繁琐
t1=t1+t2//使用运算符重载可以直接用加好来实现时间的加法运算
由于运算符也是函数,所以在用户自定义的类可以去重载这些函数.运算符重载的方法就是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算.
运算符通常是对类中的私有成员进行操作,故重载运算符应能访问类中的私有成员,所以重载运算符一般采用成员函数或友元函数的形式.
3.2 重载运算符的规则
重载运算符可以对运算符做出新的解释,但原有的基本语义不变.
不改变运算符的优先级和结合性.
不改变运算符所需要的操作数,即单目运算符只能重载为单目运算符,不能将单目运算符重载为双目运算符.
不能创建新的运算符,只有系统预定义的运算符才能被重载,除作用域操作符 :: 条件操作符 ? 点操作符 . 指向成员操作的指针操作符 ->*,.* 预处理符号:#外 ,其他系统预定义的运算符都可以被重载.
重载运算符的函数不能有默认的参数,否则就改变了运算符参数的个数.
重载的运算符必须和用户自定义类型的对象一起使用,其参数至少应该有一个是类对象或类对象的引用.
用于类对象的运算符一般必须重载,但有两个例外,运算符 = 和 &,用户不必重载这两个运算符.
运算符重载函数可以是类的成员函数,也可以是类的友元函数.对于 =,(),[] 和 ->,运算符只能用成员函数的方式进行重载,对于 <<和>> 运算符必须用友元函数的方式进行重载.
3.3 运算符重载函数作为类的成员函数
3.4 运算符重载函数作为类的友元函数
3.5 重载 ++ 和 -- 运算符
3.6 重载流插入运算符和流提取运算符
来源: http://www.bubuko.com/infodetail-2465438.html