首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求人帮忙说说C++里友元的好处解决办法

2012-02-14 
求人帮忙说说C++里友元的好处不要空洞的帮书上友元的教条定义,最好给出实例,分别说明友元函数,友元类的作

求人帮忙说说C++里友元的好处
不要空洞的帮书上友元的教条定义,最好给出实例,分别说明友元函数,友元类的作用,不用友元函数或不用友元类就实现不了或是实现起来很别扭的情况,多谢了!

[解决办法]
友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,但矛盾的是,即使是最大限度的保护,同样也破坏了类的封装特性,这即是友元的缺点
[解决办法]
开个头,operator < <  operator> > 必须是友元函数...
下面的继续...
好象不是三言两语可以说清楚的...
[解决办法]
Effective C++ 有关于成员函数,非成员函数,友元函数的详细解释
[解决办法]
在Screen类中,应该有个窗口管理器,管理显示器上的一组Screen.
class Screen
{
//Window_Mgr member can access private parts of class Screen
friend class Window_Mgr;
//...rest of the Screen class
}

Window_Mgr的成员就可以直接引用Screen的私有成员了

Window_Mgr &Window_Mgr::relocate(Screen::index r,Screen::index c,Screen &c)
{
//ok to refer to height and width
s.height+=r;
s.width+=c;
return *this;
}

缺少友元声明时,就会出错,不允许使用形参s的heigt和width成员。
[解决办法]
好处?没见到。friend基本是最没有实用意义的关键字之一。
[解决办法]
友元可以访问类的私有成员.

当然成员也可以, 可是成员不能访问类之外的私有成员.

假如你要同时访问两个类的私有成员的话, 只有友元才能做的到.

别外友元在二元运算符重载上也是大显身手.
因为成员的第一个参数总是this, 所以不能灵活的处理二元运算符的左右值.



[解决办法]
妈的,,就像女人一样,先是普通朋友,再是炮友,
所有友元有晋升为炮友的潜力,如果连友元都不是了,
那肯定一丝希望都没有了
[解决办法]
请问大家更愿意用个inline函数返回成员值还是更愿意用friend调用成员值?(运算符不算)
[解决办法]
学习
[解决办法]
任何时候都最好不要用,包括ops。

所谓friend,就是可以帮你的忙,但是有代价:代价就是他了解了你的情况,can access your resources. 破坏了封装性,故称“白箱复用”。

如果实在不能通过自身的class实现功能,就用:Adaptor(具体参考GoF的 <Design Patterns> ).

当然,如果你觉得用Adaptor很麻烦,那么,在你想access你本来无法access的resources的时候,你就使你成为他的friend。

这就是它的好处,也是它的坏处。

OK?

[解决办法]
在单键模式下很有用!
[解决办法]
友元访问基类的私有成员一种方法之一,否则就是protected或者return函数
还有ls所说的 < < > > 重载

热点排行