备考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 &);
上例中重载运算符函数声明了全部两个参数,这是因为它不是类的成员,因此它不能作为类的成员函数被调用,就缺少了一个隐含的参数。
个重载加法运算符函数也可以用类的友元函数来实现。作为一种约定,这通常把所有为类重载的运算符都设定为该类的友元。
例子中只给出了重载加法的代码,我们同样可以来重载减法,乘除法等等。
树图思维导图提供 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 在线思维导图免费制作,点击“编辑”按钮,可对 904名中国成年人第三磨牙相关知识、态度、行为和病史的横断面调查 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:10b9a8a2dd2fb4593f8130ef16c320fc
树图思维导图提供 销售经理半年规划 在线思维导图免费制作,点击“编辑”按钮,可对 销售经理半年规划 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:e614d6bcf03e9318109240a18697c5d1