TreeMind树图在线AI思维导图
当前位置:树图思维导图模板资格考试计算机2020年全国计算机二级C++复习知识点:重载双目运算符(二)思维导图

2020年全国计算机二级C++复习知识点:重载双目运算符(二)思维导图

  收藏
  分享
免费下载
免费使用文件
微笑感染人 浏览量:02023-04-10 17:11:05
已被使用0次
查看详情2020年全国计算机二级C++复习知识点:重载双目运算符(二)思维导图

备考2020年全国计算机二级考试的小伙伴们,复习的都怎么样了呢?树图网小编整理了2020年全国计算机二级C++复习知识点供大家参考复习,小伙伴们快来看看,测试一下自己吧!了解更多全国计算机二级考试敬请关注树图网计算机二级频道。

树图思维导图提供 2020年全国计算机二级C++复习知识点:重载双目运算符(二) 在线思维导图免费制作,点击“编辑”按钮,可对 2020年全国计算机二级C++复习知识点:重载双目运算符(二)  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:a25a38da3f973e2c60f3cddc1cd264dc

思维导图大纲

2020年全国计算机二级C++复习知识点:重载双目运算符(二)思维导图模板大纲

2020年全国计算机二级C++复习知识点:重载双目运算符(二)

非类成员的运算符重载

在重载运算符的原则中说到,要保持运算符的可交换性。而上面的程序只允许Date类对象在运算符的左边而整型值在右边,不支持下面的语句:

Date newdate=100+olddate;

所以,仅仅靠一个类的成员重载运算符是无法实现上面功能的。对重载双目运算符的类成员函数来说,总是认定调用函数的对象位于运算符左边。不过,我们可以再写一个非类成员的重载运算符函数,可以规定Date类的对象在运算符右边,而别的类型在运算符左边。例如,我们可以这样在类的外部定义一个函数:

Date operator + (int n,Date & dt)

下面代码在原先的基础上增加了一个非类成员函数来实现双目加法运算符的重载。

#include iostream.h

class Date

int mo,da,yr;

static int dys[];

public:

Date(int m=0,int d=0,int y=0)

{ mo=m; da=d; yr=y;}

void display() const

{ cout < Date operator + (int) const;

int Date::dys[]={31,28,31,30,31,30,31,31,30,31,30,31};

Date Date::operator+(int) const

Date dt=*this;

n+=dt.da;

while(n >=dys[dt.mo-1])

n-=dys[dt.mo-1];

if(++dt.da==13)

dt.mo=1;

dt,yr++;

dt.da=n;

return dt;

Date operator + (int n,Date & dt)

return dt+n;

int main()

Date olddate(1,1,2005);

Date newdate;

newdate=olddate+100;

newdate.display();

return 0;

上面的例子中非类成员重载运算符函数调用了类中的重载+运算符来实现加法运算。如果类当中没有提供这样的函数,那么非类成员的重载运算符函数将被迫访问类的私有数据来实现加法运算。这样的话,需要把这个函数声明为类的友元,如下:

class Date

friend Date operator + (int n,Date &);

上例中重载运算符函数声明了全部两个参数,这是因为它不是类的成员,因此它不能作为类的成员函数被调用,就缺少了一个隐含的参数。

个重载加法运算符函数也可以用类的友元函数来实现。作为一种约定,这通常把所有为类重载的运算符都设定为该类的友元。

例子中只给出了重载加法的代码,我们同样可以来重载减法,乘除法等等。

相关思维导图模板

流程图表示思维导图

树图思维导图提供 流程图表示 在线思维导图免费制作,点击“编辑”按钮,可对 流程图表示  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:5948c35cf208112e2ca32158796e1b7e

思维导图思维导图

树图思维导图提供 思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 思维导图  进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:bcea44ba49b736a7526246a1cbf17a43