C++学习笔记之友元

类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元(friend)

  • 令其他类为友元

class A{
friend B; 
private: 
    int a;
};

类B能访问类A中的private成员a

  • 令其他类的成员函数为友元

class A{
friend B:fun1(); 
private: 
    int a;
};

类B中的函数fun1()能访问类A中的private成员a

  • 令普通函数为友元

class A{
friend void fun1();
friend void fun1();
public:
    ……
private:
    int a;
};
//类外声明
void fun1();
void fun2();
注意
  1. 友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限(一般来说,最好定义在类定义开始或结束前的位置集中声明友元)
  2. 友元不是类的成员,只是一段声明的代码。
  3. 友元声明的作用是影响访问权限,但本身不是普通意义上的声明,因此需要在友元声明之外再专门对函数进行一次声明。(有些编译器没有这个强制要求,但最好还是提供一个独立的函数声明,便于移植。)

友元的缺点:破环了封装机制,万不得已才使用。

参考资料:《C++ Primer》第5版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值