【c++笔记】运算符重载总结

  1. 为什么要对运算符重载?
    答:运算符可对一些基本的数据类型进行计算,若想让对象之间实现计算(如实现复数相加),需要用到运算符重载。运算符重载实质是函数重载,是对一个已有的函数赋予新的含义,实现新的功能。运算符重载可使程序易于编写、阅读和维护。

  2. 怎样进行运算符的重载?
    答:一般格式如下:

函数类型 operator 运算符名称 (形参表)
{对运算符的重载处理}

例如:

Complex operator + (Complex& c1,Complex& c2);
  1. 重载运算符的规则?
    答:①c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载。
    ②c++允许绝大部分的运算符重载,只有5个不可以重载:
    成员访问运算符(.)成员指针访问运算符(*)、域运算符(::)、长度运算符(sizeof)、条件运算符(?:)
    ③重载不能改变运算符运算对象(即操作数)的个数。
    ④重载不能改变运算符的优先级别。
    ⑤重载不能改变运算符的结合性。
    ⑥重载运算符的函数不能有默认的参数。
    ⑦重载的运算符必须和用户定义的自定义类型的对象一起使用,其参数至少应有一个是类对象(或类对象的引用)。
    ⑧用于类对象的运算符一般必须重载,但“=”和“&”不必用户重载。

  2. 为什么流插入<<和流提取运算符>>不能定义为类的成员函数?
    答:如果定义为类的成员函数,则隐含了this指针,即第一个形参(运算符左侧的操作数)是本类的对象,如下:

ostream& Complex::operator << (ostream& cout){}

此时输出结果:data<<cout,不符合习惯。
故流插入<<和流提取运算符>>只可作为全局函数。
(如果运算符函数重载为成员函数,它的第一个参数必须是本类的对象。当第一个操作数不是类对象时,不能将运算符函数重载为成员函数。)
(返回值类型为ostream&,可实现链式编程)

  1. 递增运算符前置和后置的重载有何不同?
    答:b=a++是先把a值赋给b,a再加一
    b=++a是a先加一,再把a值赋给b
    后置重载相比于前置重载,需加一个int占位符。后置还需先把初值存起来,加一,然后返回记录的初值。

  2. 什么时候用值传递,什么时候用引用传递?
    答:当在函数内部定义了一个临时对象,这个临时对象在函数结束的时候会被释放,若用引用,找不到空间,就会出错,故当存在临时对象时,应用值传递。
    除了上述情况,建议采用引用传递,可节省空间。

参考书籍:谭浩强的《c++面向对象程序设计(第二版)》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值