当前位置:首页 > 计算机等级考证 > 模拟试题

2020年计算机二级C++考点解析:运算符重载

来源:最需教育发布时间:2020-10-15 20:53:04
  8.1运算符函数据与运算符重载

运算符重载是计算机语言固有多态性的体现,是构成计算机语言的基础之一。

C++把重载的运算符视为特殊的函数,称为运算符函数。运算符重载就是函数重载的一种特殊情况。像对待一般重载函数一样,编译系统能够依据使用运算符的不同环境,即参数(操作数)的数量或类型的差异,区分同一运算符的不同含义。

“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造出新的运算符。除了.、.*、->*、::、?:这五个运算符外,其他运算符都可以重载。由于很多符号是一元运算符和二元运算符公用的,为了避免含混,不得为重载的运算符函数设置默认值,调用时也就不得省略实参。

除了new和delete这两个较为特殊运算符以外,任何运算符如果作为成员函数重载时不得重载为静态函数。=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载,而且不能是针对枚举类型操作数的重载。

运算符函数的函数名是由运算符前加关键字operator构成的,在声明运算符或调用运算符时都可以用这个名称。

8.2典范运算符的重载

1关于分数类fraction

fraction的声明和定义包含在头文件fraction.h和程序文件fraction.cpp中。

一个标准的用fraction表示的分数须满足以下复印件:

①分母永远为正,分数和符号用分子表示;

②分子分母互质,即总表示为简分数。

fraction通过两个私有数据成员num和den分别保存分子和分母,并在必要时调用standardize函数进行标准化处理,以使num和den的值满足标准分数的条件。gcd是求两个整数的公约数的函数,standardize在化简分数时要调用它。

2重载取负运算符“-”

因为fraction用分子的符号代表整个分数的符号,因此所谓“取负”只需对分子num取负就可以了。由于取负运算符“-”是一元运算符,当作为成员函数重载时参数表中没有参数,那个一的操作数以this指针的形式隐藏在参数表中。为此,只需要在fraction.h的类声明中增加:

fractionpoerator-()const{returnfraction(-num,den);}

就可以了。由于在类声明中直接给出了完整定义,因此是一个inline函数。

“-”是一个典型的一元运算符,除++、--外的其他一元运算符的重载都可以参考这里描述的方法。

3重载加法运算符“+”

“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二操作数,而操作数就是对象本身,仅以this指针的形式隐藏在参灵敏表中。

“+”是一个典型的二元运算符,除赋值类运算符外的其他二元运算符的重载都可以参考这里描述的方法。

责编:胡梦瑶

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

2021年国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

2021国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部