【C++学习】C++运算符重载

c++中预定义的运算符的操作对象只能是基本数据类型,对于很多的用户自定义类型,也可以进行相似的运算符操作。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。
运算符重载的实质就是函数重载。
基本过程:首先要把指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参,然后根据实参的类型来确定需要调用的重载类型函数。

一:运算符重载的规则
1.不能重载的运算符只有五个,其他的都可以进行重载,但是只能重载c++已有的运算符。

不能重载的运算符:
.(成员访问运算符)
.*(成员指针访问运算符)
::(域访问运算符)
?:(条件运算符)
sizeof(长度运算符)

2.重载之后的运算符的优先级和结合性都不会改变。

3.运算符重载是针对新类型数据的实际需要,对原有的运算符进行适当的改造。一般来说,重载的功能应当与原有的功能相类似,不能改变原运算符的操作对象个数,同时至少要有一个操作对象是自定义类型。

二:运算符重载的分类
运算符的重载形式有两种。一个是重载为类的成员函数,另一个是重载为类的友元函数。
1.重载为类的成员函数:

函数类型 operator 运算符(形参表)
{
    函数体;
}

2.重载为类的友元函数:

friend 函数类型 operator 运算符(形参表)
{
     函数体;
}

函数类型:运算结果的类型
operator:定义运算符重载函数的关键字
运算符:重载的运算符名称

当运算符重载为类的成员函数时,函数的参数个数比原来的操作个数要少一(后置单目运算符除外,这是因为成员函数用this指针隐式的访问了类的一个对象,作为运算符函数最左边的操作数);当重载为类的友元函数,参数个数与原来的操作个数一样。原因是重载为类的成员函数时,如果某一个对象调用了重载运算符的成员函数,自身的数据可以直接进行访问,少了的操作数就是该对象本身。而重载为类的友元函数时,友元函数会对某一个对象进行操作,就必须传递所有的参数。

三:运算符重载为类的成员函数

双目运算符重载为类的成员函数的时候,函数只显式的说明一个参数,该形参是运算符的右操作数。
前置单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。
后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。

调用方式:a+b等价于a.operator +(b)

四:运算符重载为类的友元函数
调用方式:a+b等价于operator +(a,b)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值