C++复习要点总结之——友元

在C++中,类的成员访问权限有三种,private,protected,public。

private:类中的private成员只能够在本类中或者友元访问,子类或外界无法访问私有成员。

protected:类中的protected成员只允许本类或者子类中访问,外界无法访问,(定义类时如果希望成员被子类继承而外界不能访问就可以定义为                                protected成员)

public:类中public成员在本类、子类和外界中都能够进行访问。

请思考:为什么private中的成员可以被友元访问,什么是友元?友元是如何实现的?

在某些情况下,我们需要允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问。这就是友元存在的使命。例如,被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。这些操作符不可能为类的成员。然而,尽管不是类的成员,它们仍是类的“接口的组成部分”。

而友元机制,允许一个类将对其非公有成员的访问权授予指定的函数或类。友元的声明以关键字 friend 开始。它只能出现在类定义的内部。友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受声明出现部分的访问控制影响。

下面给出C++中所有有关友元的结论和限制,然后后面针对每个细节给出示例:

1. 友元函数


2友元类

Ø  若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数

Ø  友员类通常设计为一种对数据操作或类之间传递消息的辅助类



将类man声明为类woman的友元类,使得可以通过类man对象访问类woman的私有成员。
  1. class woman; // 前向声明  
  2. class man  
  3. {  
  4. public:  
  5.     void disp(woman &w);  
  6.     void reset(woman &w);  
  7. };  
  8. class woman  
  9. {  
  10. public:  
  11.     friend class man; // 将man设为woman的友元类,这样man对象的任何成员函数都可以访问woman的私有成员  
  12. private:  
  13.     string name;  
  14. };   
  15. void man::disp(woman &w)  
  16. {  
  17.     cout << w.name << endl;  
  18. }   
  19. void man::reset(woman &w)  
  20. {  
  21.     w.name.clear();  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值