谁帮我解释一下一道C++的题目。。

8、设计一个长方形类Rectangle,包含长和宽两个私有数据成员,要求重载运算符“<”或者“>”,并以友元函数方式实现,以比较两个长方形对象面积的大小。classRec... 8、 设计一个长方形类Rectangle,包含长和宽两个私有数据成员,要求重载运算符“<”或者“>”,并以友元函数方式实现,以比较两个长方形对象面积的大小。
class Rectangle
{
private:
float width,height,area;
public:
Rectangle(float f1,float f2)
{
width=f1;
height=f2;
area=f1*f2;
}
friend int operator>(Rectangle r1,Rectangle r2);
};
int operator>(Rectangle r1,Rectangle r2)
{
if(r1.area>r2.area)
return 1;
if(r1.area==r2.area)
return 0;
if(r1.area<r2.area)
return -1;
}
void main( )
{
Rectangle r1(3,4);
Rectangle r2(2.5,5);
cout<<(r1>r2)<<endl;
}

主要是友元函数是什么意思?

谁能帮忙代码上都注释一下。。谢谢了。。

还有这段能不能正常运行?
展开
 我来答
披头浪子
2010-07-09 · TA获得超过124个赞
知道答主
回答量:63
采纳率:0%
帮助的人:75.4万
展开全部
//定义类Rectangle
class Rectangle
{
private://定义私有成员变量
float width,height,area;
public:
//定义带参数的构造方法
Rectangle(float f1,float f2)
{
width=f1;//设置宽度
height=f2;//设置高度
area=f1*f2;//计算面积
}
/**
* 声明一个友元函数,该函数是对运算符">"的重载
* 友元:友元可以是方法也可以是其他的类,友元能够访问本类中的所有
* 成员,包括私有成员,但友元不属于本类。
*/
friend int operator>(Rectangle r1,Rectangle r2);
};
//是对上面声明的友元的定义
int operator>(Rectangle r1,Rectangle r2)
{
if(r1.area>r2.area)
return 1;
if(r1.area==r2.area)
return 0;
if(r1.area<r2.area)
return -1;
}
void main( )
{ //定义两个“矩形”类,并比较二者的面积大小
Rectangle r1(3,4);
Rectangle r2(2.5,5);
cout<<(r1>r2)<<endl;//这里隐式的调用了友元函数
}

/****************************
* 这段代码基本没有什么问题,可以直接运行,只是建议把那个函数改成
* 下面的形式:
int operator>(Rectangle r1,Rectangle r2)
{
if(r1.area==r2.area)
return 0;
else if(r1.area>r2.area)
return 1;
else
return -1;
}
*************************************/
无尽的华尔兹Cluw3
2010-07-09 · TA获得超过157个赞
知道小有建树答主
回答量:264
采纳率:0%
帮助的人:0
展开全部
友元就是有好的意思,可以使用友元类的函数和变量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zpgsb
2010-07-09 · TA获得超过453个赞
知道小有建树答主
回答量:552
采纳率:72%
帮助的人:281万
展开全部
友元函数就是:定义一个函数,它不类的成员函数,但是可以访问这个类的私有成员。
这个代码关于友元函数的问题没啥问题。但是r1.area==r2.area这句,float类型的变量是有精度的,不能用==来比较。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghost_style104
2010-07-09
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
--------------------Configuration: test - Win32 Debug--------------------
Compiling...
test.cpp
F:\c++\test.cpp(18) : error C2248: 'area' : cannot access private member declared in class 'Rectangle'
F:\c++\test.cpp(6) : see declaration of 'area'
F:\c++\test.cpp(18) : error C2248: 'area' : cannot access private member declared in class 'Rectangle'
F:\c++\test.cpp(6) : see declaration of 'area'
F:\c++\test.cpp(20) : error C2248: 'area' : cannot access private member declared in class 'Rectangle'
F:\c++\test.cpp(6) : see declaration of 'area'
F:\c++\test.cpp(20) : error C2248: 'area' : cannot access private member declared in class 'Rectangle'
F:\c++\test.cpp(6) : see declaration of 'area'
F:\c++\test.cpp(22) : error C2248: 'area' : cannot access private member declared in class 'Rectangle'
F:\c++\test.cpp(6) : see declaration of 'area'
F:\c++\test.cpp(22) : error C2248: 'area' : cannot access private member declared in class 'Rectangle'
F:\c++\test.cpp(6) : see declaration of 'area'
执行 cl.exe 时出错.

test.obj - 1 error(s), 0 warning(s)
楼上那么多人说没问题,为什么我编译之后出现了错误呢?不懂,求教~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式