CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

至今,我不明白为什么使用友元(friend)函数!(50分赠送)

楼主girsjj_Lavender(薰衣草)2002-04-01 09:57:01 在 VC/MFC / 基础类 提问

我不明白为什么使用友元(friend)函数,使用friend的地方都可以用public来声明!! 问题点数:50、回复次数:7Top

1 楼AloneWolf(孤狼)回复于 2002-04-01 10:01:59 得分 0

public声明的任何类都可以访问,friend的只有friend的类可以访问Top

2 楼fz_zhou(vcfan)回复于 2002-04-01 10:12:52 得分 0

对楼上的friend类定义表示不解!  
   
  friend   就是比如你自己类中有一些保护成员变量和函数,只想让一些特定的类使用,然后你就可以把那些类定义为自己类的友员!  
   
  class   A  
  {  
  protected:  
                    int   i;  
                    SetValue(int   nValue   )  
                  {           j   =   nValue;         }  
  private:  
                    int   j;  
  public:  
                    int   k;  
  friend   calss   B;  
  };  
   
  class   B  
  {  
  A   a;  
  a.SetValue(5);//OK  
  a.i   =10;//OK  
  a.j   =   20;//Wrong    
  };  
   
  class   C  
  {  
  A   a;  
  A.SetValue(   5   );//Wrong;  
  A.k   =   5;//OK  
  }  
   
  void   main()  
  {  
    A   a;  
    B   b;  
    C   c;  
  }  
   
  明白否!  
  Top

3 楼wwwquiccklwl(lwl)回复于 2002-04-01 10:17:36 得分 0

友元,就是相信别人啦。你把谁声明为友元,你就是信任她,那么她就可以“滥用你的一切”啦!!!     :)Top

4 楼oyxiaoyu0(小雨仔)回复于 2002-04-01 10:33:25 得分 0

public在一个类实例化后的对象中也可以访问的!  
  但friend却不可以!只可以在他的友员类中访问的!·  
  Top

5 楼qingbo(轻波)回复于 2002-04-01 15:53:02 得分 0

在类外的访问类中的私有变量Top

6 楼liangshoulong(咖啡需要学习)回复于 2002-04-01 15:57:11 得分 0

关注!Top

7 楼mage_ningxia(不听话)回复于 2002-04-01 18:33:42 得分 50

以public声明来代替友员有个致命的坏处,那就是他会影响到你的派生类,如果你的派生类还有自己的派生类......如此下去,那么这就了不得了,你的继承体系会乱作一团,你无法控制你的子类的那些危险行为,友员则只是简单的向某些特定的类开放自己的细节,这样便于控制。Top

相关问题

  • 不明白ereg函数
  • 不明白构造函数
  • 不明白此函数?
  • friend 模板函数
  • 有几个函数不明白
  • 关于DateAdd函数的不明白?·!·
  • eval()这个函数不是很明白
  • 函数出问题了~~不明白
  • 全局函数让我搞不明白-_-
  • 小弟问一个函数执行的次数及效率(不明白函数)

关键词

  • 函数
  • friend
  • 类
  • 派生
  • 明白
  • 友元
  • 使用
  • setvalue
  • 访问
  • 声明

得分解答快速导航

  • 帖主:girsjj_Lavender
  • mage_ningxia

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo