计算机等级考试:如何使用非类成员的运算符重载

发布于 2018-01-30 16:39  编辑:盘子
0
计算机等级考试题库 扫码微信刷题

问:计算机等级考试:如何使用非类成员的运算符重载


考无忧小编解答:为了能进行类对象和一个整型值的加法运算,需要写一个类的成员函数来重载双目加法(+)运算符。该函数在类中的声明如下:

Date operator + (int) const;

函数的声明指出,返回值是一个Date类对象,函数名是运算符+,只有一个整型参数,而且函数是常量型的。当编译器发现某个函数以加上前缀operator的真实运算符作为函数名,就会把该函数当作重载运算符函数来处理。如果在表达式中,该运算符的左边是一个类对象,右边是一个参数类型的一个对象,那么重载运算符函数就会被调用。调用形式如下:

Date dt(6,9,2005);

dt=dt+100;

也可以显式的调用重载运算符函数:

dt.operator + (100);

下面代码重载了双目加法运算符来计算一个整数和一个Date类对象之和,并且返回Date类对象。

#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;

}

int main()

{

Date olddate(1,1,2005);

Date newdate;

newdate=olddate+100;

newdate.display();

return 0;

}







考无忧小编推荐:

更多计算机等级考试真题及答案>>>点击查看

想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>点击查看



本文网址:http://www.k51.com.cn/info/jsjdjks/1801/3025426.html
选择分享到: