C++友元friend让好基友全局函数访问类中私有空间

我们的家都有有客厅和卧室,客厅可以给所有人进,但是卧室只能给好基友进。

怎么样才能让家类外的好基友能有权限访问类内的私有空间卧室呢。

这就要用到友元friend关键字了。

下面用代码做示范:

1.首先创建一个Home类代表我们的家,再给它添加一个公共属性客厅,和一个私有属性卧室。
class Home
{
public://我家客厅是公共空间,所有人都能访问
	string m_SittingRoom;

private://我家卧室是私人空间,只给好朋友访问
	string m_BedRoom;

public:
	Home()
	{
		m_SittingRoom = "客厅";
		m_BedRoom = "卧室";
	}
};
2.设计一个好基友访问我们家的全局函数。

可以看到好基友想访问我们的卧室时,程序报错了,说Home类中的私有属性卧室不可访问。所以我们需要给好基友全局函数一个访问私有属性的权限。

3.在Home类定义时,添加friend void GoodGay(Home &h);告诉编译器GoodGay函数是我们Home类的朋友,给他访问权限。
class Home
{

	friend void GoodGay(Home &h);
public://我家客厅是公共空间,所有人都能访问
	string m_SittingRoom;

private://我家卧室是私人空间,只给好朋友访问
	string m_BedRoom;

public:
	Home()
	{
		m_SittingRoom = "客厅";
		m_BedRoom = "卧室";
	}
};

这样一来,好基友就可以访问我们的卧室啦。

同理friend也可以给其他类/成员函数访问权限,用法也是friend+其他类/成员函数的声明。如:

friend class GoodGay;

friend void GoodGay::visit();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值