码迷,mamicode.com
首页 > 其他好文 > 详细

运算符重载

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

标签:div   add   简洁   col   重载运算符   3.3   []   去重   成员函数   

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重载流插入运算符和流提取运算符

运算符重载

标签:div   add   简洁   col   重载运算符   3.3   []   去重   成员函数   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!