首页 > 其他 > 详细

运算符重载

时间:2018-01-18 00:03:32      阅读:186      评论:0      收藏:0      [点我收藏+]

3.1什么是运算符重载

为了实现两个Time类对象的加法运算,可以写出如下语句:

Time t1,t2;//定义时间类对象t1、t2
t1=Tadd(t1,t2);//调用函数Tadd()计算两个时间的和
//显然这种调用方式不直观,太繁琐
t1=t1+t2//使用运算符重载可以直接用加好来实现时间的加法运算

所谓重载,就是重新赋予新的含义。运算符重载是将系统中已有的运算符赋予不同的意义。使用运算符重载可以使C++的代码更直观、更易懂、更灵活,使得用户自定义的数据类型以一种更方便、更简洁的方式工作。

由于运算符也是函数,所以在用户自定义的类可以去重载这些函数。运算符重载的方法就是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。

运算符通常是对类中的私有成员进行操作,故重载运算符应能访问类中的私有成员,所以重载运算符一般采用成员函数或友元函数的形式

 

3.2重载运算符的规则

  • 重载运算符可以对运算符做出新的解释,但原有的基本语义不变。
  • 不改变运算符的优先级和结合性。
  • 不改变运算符所需要的操作数,即单目运算符只能重载为单目运算符,不能将单目运算符重载为双目运算符。
  • 不能创建新的运算符,只有系统预定义的运算符才能被重载,除作用域操作符 :: 条件操作符 ? 点操作符 . 指向成员操作的指针操作符 ->*,.*预处理符号:#外其他系统预定义的运算符都可以被重载
  • 重载运算符的函数不能有默认的参数,否则就改变了运算符参数的个数。
  • 重载的运算符必须和用户自定义类型的对象一起使用,其参数至少应该有一个是类对象或类对象的引用
  • 用于类对象的运算符一般必须重载,但有两个例外,运算符 = 和 &,用户不必重载这两个运算符
  • 运算符重载函数可以是类的成员函数,也可以是类的友元函数。对于=、()、[] 和 ->,运算符只能用成员函数的方式进行重载,对于 << 和 >> 运算符必须用友元函数的方式进行重载

 

3.3运算符重载函数作为类的成员函数

3.4运算符重载函数作为类的友元函数

3.5重载++和--运算符

3.6重载流插入运算符和流提取运算符

运算符重载

原文:https://www.cnblogs.com/exciting/p/8306694.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!