C++ 数据共享与保护(2)

C++ 数据共享与保护

类的友元

友元是C++提供的一种破坏数据封装和数据隐藏的机制。

友元函数

友元函数是在类的声明中由friend 修饰的非本类成员函数,在友元函数中可以通过对象访问它们的成员。

#include <iostream>
using namespace std;
class B {
public: int j = 11;
};
class A {
	int i=10;
		friend void fun(A & a, B & a1)
	{
		cout << a.i + a1.j << endl;//此处出现了a1.j
		//则B类的定义必须出现在A类的前面
	}
};
int main() {
	A a;
	B a1;
	fun(a,a1);//友元函数不属于类,直接调用;
	return 0;
}
友元类

若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都能访问B类的任何成员
class A{
friend B;B为A的友元
}

class A
{   friend class B;
    public:
      void Display()
       {cout<<x<<endl;}
    private:
      int x;
};
class B
{   public:
      void Set(int i);
      void Display();
    private:
      A a;
};
void B::Set(int i)
{a.x=i;}
void B::Display()
{a.Display();}
int main()
{ B b;
  b.Set(1);
  b.Display();
  return 0;
}

说明:
(1)友元函数的声明可以出现在类的任何地方,即友元的声明不受成员访问控制符的限制。
(2)友元关系是单向的。
(3)友元关系是不能传递的。
(4)友元关系不能被继承。
(5)实际工作中,除非有必要,一般不把整个类声明为友元类。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值