设为首页 加入收藏

TOP

4.1.2 友元类
2013-10-07 16:21:51 来源: 作者: 【 】 浏览:72
Tags:4.1.2 元类

4.1.2  友元类

除了前面讲过的友元函数外,友元还可以是一个类,即一个类可以作为另一个类的友元。当一个类作为另一个类的友元时,就意味着这个类的所有成员函数都是另一个类的友元函数。例如,以下程序说明类B是类A的友元类:

  1. class A  
  2. {   ...  
  3. public:  
  4.     friend class B;             //说明B是A的友元类  
  5.     ...  
  6. }  

例如,有以下程序:

  1. #include <iostream.h> 
  2. #include <math.h> 
  3. class A  
  4. {   int x;  
  5. public:  
  6.     A() {x=5;}  
  7.     friend class B;  
  8. };  
  9. class B  
  10. {  
  11. public:  
  12.     void disp1(A tmp) {tmp.x++;cout << "disp1: x=" << tmp.x << endl; }  
  13.     void disp2(A tmp) {tmp.x--;cout << "disp2: x=" << tmp.x << endl; }  
  14. };  
  15. void main()  
  16. {   A obj1;  
  17.     B obj2;  
  18.     obj2.disp1(obj1);  
  19.     obj2.disp2(obj1);  
  20. }  

上述程序中,类B是类A的友元类,类B包括两个成员函数,这两个成员函数可以当成类A自已的友元函数一样使用。该程序的执行结果如下:

  1. disp1:x=6 
  2. disp2:x=4 

使用友元类时注意以下几点:

友元关系不能被继承。

友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。

友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的声明。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ API设计 目录(3) 下一篇4.2.1 单项选择题

评论

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

·用 Python 进行数据 (2025-12-25 15:49:09)
·如何学习Python数据 (2025-12-25 15:49:07)
·利用Python进行数据 (2025-12-25 15:49:04)
·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)