运算符重载的运用

对于自定义类型可以自定义它的运算规则,我们来看看以下一些问题

1.哪个操作符不能被重载 ( )

A.->B.()C.. D.[]

C++规定,不能被重载的运算符只有5个, 点号. 三目运算?: 作用域访 问符:: 运算符sizeof 以及.*

所以这题正确答案是C。

2.在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明该运算符是 ( )

A.无操作数的运算符
B.二元运算符
C.前缀一元运算符
D.后缀一元运算符

没有如何参数,其实并不是真的没有传参数,而是只隐式的传了一个this指针,所以只有一个参数。至于如何判断前缀还是后缀,就++和--而言,前置无需传参,而后置需要传int。所以区分前缀后缀时,后缀运算需要加一个int参数。显然参数表没有如何参数那么这个运算符就一定是后缀一元运算符。

所以这题正确答案是D。

3.若要对data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )

A.Data operator+(Data);
B.Data operator(Data);
C.operator+(Data,Data);
D.Data+(Data);

 既然是函数的声明,就一定得有返回值,参数,以及正确的函数名。我们期望它返回的也是Date这个类,故这里+运算符的返回值是Date。又因为传参时第一个操作数会被隐式的传成this指针,所以进行+操作时只需传第二个操作数。运算符重载的格式是:函数名字为关键字operator后面接需要重载的运算符符号。 综上所述,只有A选项符合函数声明。

所以这道题正确答案是A。

下列关于赋值运算符“=”重载的叙述中,正确的是( )

A.赋值运算符只能作为类的成员函数重载
B.默认的赋值运算符实现了“深层复制”功能
C.重载的赋值运算符函数有两个本类对象作为形参

D.如果己经定义了复制拷贝构造函数,就不能重载赋值运算符

A. 赋值运算符在类中不显式实现时,编译器会生成一份默认的,此时用户在类外再将赋值运算符重载为全局的,就和编译器生成的默认赋值运算符冲突了,故赋值运算符只能重载成成员函数。B.默认的赋值运算符是按成员成员,属于浅赋值。C.参数只有一个,另一个通过this指针传递。D.两个函数的调用场景不同,相互没有影响

 所以这道题的正确答案是A。

 接着,在来看看这些问题:

1.计算日期到天数转换_牛客题霸_牛客网

描述

根据输入的日期,计算是这一年的第几天。

保证年份为4位数且日期合法。

输入描述:

输入一行,每行空格分割,分别是年,月,日

输出描述:

输出是这一年的第几天

这里要输出是这一年的第几天,很容易就能想到用该日期减去这一年的第一天,简单点说就变成了两个类的减法。

由于日期类的基本运算符已经在运算符重载 中实现过,这里不再赘述     

对于该年的第一天,我们仅需传year即可,月和天可以用缺省值初始化

Date d1(year, month, day);
Date d2(year);

 这样就完成了计算:

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

 2.日期差值_牛客题霸_牛客网 (nowcoder.com)

描述

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

输入描述:

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出描述:

每组数据输出一行,即日期差值

 和上面题目非常类似,只要我们能完成类里面的运算符重载,那就很简单了,这题不做过多解释

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com)

 

3.打印日期_牛客题霸_牛客网 (nowcoder.com)

描述

给出年分m和一年中的第n天,算出第n天是几月几号。

输入描述:

输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。

输出描述:

可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。

同样,这题也可以使用运算符重载:

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com) 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值