问题 问答题

【说明】 在矩形类中重载关系运算符“>=”,采用友元,比较的依据是矩形面积的大小。重载算术运算符“+=”,采用成员函数,更新矩形对象的长与宽,分别加上形参矩形的长与宽。重载算术运算符+,利用构造函数,采用友元。 【代码】 class Crect { int length,witdth; public; CRect(int l,int w){ length=l; width=w; } friend int operator>=(CRect& r1, CRect& r2) { return (1) >= (2) ;//比较面积 } void operator+=(CRect& r){ (3) ;//求长 (4) ;//求宽 } friend operater+(CRect& r1, CRect& r2){ return CRect( (5) ); //利用构造函数 } }

答案

参考答案:

解析:(1)r1.length*r1.width (2)r1.length*r1.width (3)length+=r.length (4)width+=r.width (5)r1.length+r2.length,r1.width+r2.width

[分析]: 本题考查C++中的函数重载与友元。 题目要求在矩形类中采用友元重载关系运算符“>=”,比较的依据是矩形面积的大小;采用成员函数重载算术运算符“+=”来更新矩形对象的长与宽,其功能是分别加上形参矩形的长与宽;重载算术运算符“+”,利用构造函数,也采用友元的方式。首先我们要了解一下友元的作用。 需要在类的外部直接访问类的私有数据成员,在不改变类的数据成员安全性的前提下,使得类外部的函数或类能够访问类中的私有成员数据,这一功能可以通过友元的方式来实现。下面来具体分析程序。 第(1)空与第(2)空要结合起来完成,它们是重载关系运算符“>=”的两个操作数,而根据题目要求,这个关系运算符的比较依据是矩形面积的大小,求矩形的面积是通过矩形的长和宽来实现的,这个函数的参数是两个矩形类对象,在定义矩形类时,分别把矩形的长和宽定义成了默认的私有成员变量。根据程序中函数的定义可以知道,这个函数被定义为友元函数,可以访问矩形类中的私有成员变量,因此这两个空的答案分别是用对象的长和宽计算其面积,即答案分别为r1.length*r1.width与r2.length*r2.width。 第(3)空与第(4)空要结合起来完成,它们是重载算术运算符“+=”函数下面的操作,根据题目要求,这个算术运算符的作用是用来根据形参矩形的长与宽更新该矩形对象的长与宽,是该矩形对象的长与宽分别加上形参矩形对象的长与宽,根据注释,第 (3)空用来更新其长,因此此空答案为length+=r.length;而第(4)空用来更新其宽,因此答案为width+=r.width。 第(5)空在重载算术运算符“+”的函数下面,根据题目要求,此函数的实现是利用矩形类的构造函数和友元共同实现的。从程序中可以明显知道,此空是构造函数的参数,而构造函数的两个参数分别是矩形的长与宽。算术运算符“+”的作用我们大家也都非常熟悉,是用来计算两个操作数的和。重载算术运算符“+”的函数参数是两个矩形对象,那么构造函数中的两个参数应该分别是这两个矩形对象的长与宽的和。所以此空答案为r1.length+r2.length,r1.width+r2.width。

选择题
问答题 简答题