运算符重载

1、定义:

对于一些复杂数据类型,在数据定义时,根据数据类型特点,对运算符赋予新的含义,便于复杂数据类型像简单数据类型一样进行基本操作。

分为:成员函数重载、友元函数重载
成员函数重载(默认第一个操作数是当前对象,有时操作数不是当前对象所以引入了友元函数)

(1) 成员运算符函数比友元运算符函数少带一个参数(后置的++、–需要增加一个形参)。
(2) 双目运算符一般可以被重载为友元运算符函数或成员运算符函数,但当操作数类型不相同时,必须使用友元函数。

在这里插入图片描述
!!!
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、成员函数重载

成员运算符函数的原型在类的内部声明格式如下:
class X {
//…
返回类型 operator运算符(形参表);
//…
}

在类外定义成员运算符函数的格式如下:
返回类型 X::operator运算符(形参表)
{
函数体
}

前置后置区别:
Time Time∷operator++( ) //定义前置自增运算符“++”重载函数
{
if(sec++>=60) {
sec-=60; //满60秒进1分钟
minute ++;
}
return * this; //返回当前对象值
}
Time Time∷operator++(int) //定义后置自增运算符“++”重载函数
{
Time temp(*this);
sec++;
if(sec>=60) {
sec-=60;
++minute;
}
return temp; //返回的是自加前的对象

——class Complex
{
public:
Complex( ) {real=0,imag=0;}
Complex(double r,double i) {real=r; imag=i;}
Complex operator + (Complex &c2); 传引用(对象做参数一般采用引用方式传参)
void display( );——

在这里插入图片描述

3、友元函数重载常用于运算符的左右操作数类型不同的情况
在这里插入图片描述
!!!
C++中不能用友元函数重载的运算符有
= () [] ->

4、几个典型运算符重载

(1)设 A Aobject ;
运算符 ++和 - - 有两种方式:
前置方式: ++Aobject --Aobject

(2)重载赋值运算符

赋值运算符重载用于对象数据的复制 ;
operator= 必须重载为成员函数
重载函数原型为:
类名 & 类名 :: operator= ( 类名 ) ;

(3)重载运算符[]和()

运算符 [] 和 () 是二元运算符
[] 和 () 只能用成员函数重载,不能用友元函数重载

重载下标运算符 []
[] 运算符用于访问数据对象的元素
重载格式 类型 类 :: operator[] ( 类型 ) ;
在这里插入图片描述

重载函数调用符 ()
() 运算符用于函数调用
重载格式 类型 类 :: operator() ( 参数表 ) ;
在这里插入图片描述

(4)重载流插入和流提取运算符
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值