设为首页 加入收藏

TOP

4.3.2 友元成员
2013-10-07 01:17:06 来源: 作者: 【 】 浏览:69
Tags:4.3.2 成员

4.3.2  友元成员

除了一般的函数可以作为类的友元外,一个类的成员函数也可以作为另一个类的友元。这样的函数不仅可以访问本类的所有成员,还可以访问其友元类的所有成员。需要注意的是当在一个类中的某个成员函数定义为另一个类的友元函数时需要首先定义此类。例如要定义类A的某个函数为类B的友元函数,那么需要先定义类B,然后再进行类A的成员函数与B友元的定义。

【示例4.18】 利用友元成员访问其类的数据成员。

  1. #include"iostream.h"  
  2. #include"math.h"  
  3. class line;                         //类的声明  
  4. class point                         //类point  
  5. {  
  6. private:  
  7.     int x;int y;  
  8. public:  
  9.     point(int a,int b)              //构造函数  
  10.     {  
  11.         x=a;y=b;  
  12.     }  
  13.     void print(line &);             //成员函数  
  14. };  
  15. class line  
  16. {  
  17. private:  
  18.     int x1;int y1;  
  19.     int x2,int y2;  
  20. public:  
  21.     line(int a,int b,int c,int d)   //构造函数  
  22.     {  
  23.         x1=a;x2=b;  
  24.         y1=c;y2=d;  
  25.     }  
  26.     friend void point::print(line &);   //声明友元成员  
  27. };  
  28. void point::print(line &p)  //友元成员定义实现对line类的数据成员的访问  
  29. {  
  30.     cout<<x<<y<<endl;  
  31.     cout<<p.x1<<p.x2<<p.y1<<p.y2<<endl;  
  32. }  
  33. void main()  
  34. {  
  35.     point A(7,8);                       //定义对象  
  36.     line l(1,2,3,4);                    //定义对象  
  37.     A.print(l);  

分析:上面类的友元成员的定义可以实现对类的数据成员进行访问。上面利用类point的成员函数,定义为类line的友元函数,实现了对友元的数据的访问。运行结果如下:

  1. 78  
  2. 1234 
对于一个友元成员来说,它不仅可以访问自己所在类中的私有成员和公有成员,同时还可以对声明为友元类的类的成员进行访问。使用友元成员可以使得两个类之间出现互相访问的一个"门"。这样解决了由于类的保护机制而出现的其他类绝对不允许访问的情况。

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

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.2.2 默认参数的构造函数 下一篇4.3.1 友元函数

评论

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