c++类的友元——friend

友元的作用

在c++中的类成员有三种权限分别是:

  1. public: 类内类外都可以访问
  2. private: 类内可以访问,类外不可以访问
  3. protected: 类内可以访问,类外不可以访问

因此friend的目的是类外也可以访问类内的private和protected成员。此外friend与权限无关,可以写在任意权限下面。

友元的实现方式

友元有三种实现方式:

  1. 全局函数做友元
  2. 类做友元
  3. 成员函数做友元

全局函数做友元

代码:

class GoodGay
{
	friend void globalFunctionGoodGay();  // 全局函数做友元
public:
	GoodGay()
	{
		pub_string = "pub_string";
		pri_string = "pri_string";
		pro_string = "pro_string";
	}
	string pub_string;
private:
	string pri_string;
protected:
	string pro_string;
};

void globalFunctionGoodGay()
{
	GoodGay dark118;
	cout << "访问公共" << dark118.pub_string << endl;
	cout << "访问私有" << dark118.pri_string << endl;
	cout << "访问保护" << dark118.pro_string << endl;

}

结果:

访问公共pub_string
访问私有pri_string
访问保护pro_string
请按任意键继续. . .

类做友元

类做友元和全局函数做友元相同。只需要在类GoodGay中加入一行代码即可

friend class classGoodGay;

classGoodGay的定义如下:

class classGoodGay
{
	//一个类可以访问另一个类的私有成员
public:
	GoodGay* good1;
	classGoodGay()
	{
		good1 = new GoodGay;
	}
	void interview()
	{
		cout << "访问公共" << good1->pub_string << endl;
		cout << "访问私有" << good1->pri_string << endl;
		cout << "访问保护" << good1->pro_string << endl;
	}
	
};

结果:

访问公共pub_string
访问私有pri_string
访问保护pro_string
请按任意键继续. . .

成员函数做友元

class GoodGay;
class membwerFunctionGoodGay
{
public:
	GoodGay* good2;
	membwerFunctionGoodGay();
	
	void interview1();  
};

class GoodGay
{
	friend void membwerFunctionGoodGay::interview1();
public:
	GoodGay()
	{
		pub_string = "pub_string";
		pri_string = "pri_string";
		pro_string = "pro_string";
	}
	string pub_string;
private:
	string pri_string;
protected:
	string pro_string;
};

membwerFunctionGoodGay::membwerFunctionGoodGay()
{
	good2 = new GoodGay;
}

void membwerFunctionGoodGay::interview1()  
{
	cout << "访问公共" << good2->pub_string << endl;
	cout << "访问私有" << good2->pri_string << endl;
	cout << "访问保护" << good2->pro_string << endl;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值