设为首页 加入收藏

TOP

4.3.1 友元函数
2013-10-07 01:17:01 来源: 作者: 【 】 浏览:63
Tags:4.3.1 函数

4.3  友元

类的主要特点是数据隐藏,即类的私有成员只可以被类的内部使用。但是有的时候需要在类的外部访问类的私有成员,为此C++(www.cppentry.com)利用了一种新的机制--友元。

4.3.1  友元函数

友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。在类的定义中声明友元函数时,需要在函数名前面加上friend。友元函数可以定义在类的内部,也可以在类的外部定义。

注意:友元在类的封装性中打了个孔,使封装性的强度下降。程序中如非必要,应尽量减少友元的使用。

【示例4.17】 利用友元函数实现类point的变量的初始化。

  1. #include"iostream.h"  
  2. #include"math.h"  
  3. class point  
  4. {  
  5. private:  
  6.     int x;int y;  
  7. public:  
  8.     float distance()                            //定义成员函数  
  9.     {  
  10.         return sqrt(x*x+y*y);  
  11.     }  
  12.     friend void init(point &,int a,int b);      //声明友元函数  
  13. };  
  14. void init(point &p,int a,int b)             //函数定义  
  15. {  
  16.     p.x=a;  
  17.     p.y=b;  
  18. }  
  19. void main()  
  20. {  
  21.     int x;int y;  
  22.     cin>>x>>y;  
  23.     point pt;                               //定义类的对象  
  24.     init(pt,x,y);                           //使用友元函数  
  25.     cout<<pt.distance()<<endl;              //调用类的成员函数  
分析:因为友元函数不是类的成员函数,因此友元函数一般都有一个该类的入口参数。上面的例子利用了友元函数对类的私有成员变量进行访问。虽然友元函数解决了对类的成员的访问,但它同时也造成了类的不安全性,类本来是要保证数据安全性的。因此在使用友元函数时要谨慎判断其访问权限,防止出现数据被不合法地访问。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.3.2 友元成员 下一篇4.2.3 析构函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: