c++友元

    上一篇博文提到了访问权限,想到友元可以改变访问权限,在这里记录一下。

    友元用friend申请,其他类不可以访问本类型的私有成员,但是申请友元后侧可以访问。


    一般友元有3种形式:

    1)友元类   2)友元函数   3)友元成员函数

    

   1友元类
class A;//第一步申明友元类
class B//第二步定义要申请友元的类(在类中申明友元关系)
{
public:
	B(int _age):age(_age){}
	friend A;//申明友元关系
private:
	int age;
};

class  A//第三步定义友元类
{
public:
  void print(const B & b)
  {
	  cout<<"B.age=="<<b.age<<endl;
  }
};

    2友元函数
class B//第一步定义要申请友元的类(在类中申明友元关系)
{
public:
	B(int _age):age(_age){}
	friend void print(const B & b);//申明友元关系
private:
	int age;
};

//第二步定义友元函数
void print(const B & b)
{
   cout<<"B.age=="<<b.age<<endl;
}

   3友元成员函数(最麻烦的一个)
class B;//第一步申明要申请友元的类(因为友元类中要用到它)

class A//第二部可以定义友元类(类中的友元成员函数除外,因为它要用到申请友元类的成员,而暂时申请友元的类并没有定义)
{
public:
	A(){ cout<<"Run Constructor"<<endl;}
	void test(){cout<<"Run test"<<endl;}
	void print(const  B & b);//申明类中友元成员函数,只是申明
};

class B//第三步定义要申请友元的类(在类中申明友元关系)
{
public:
	B(int _age):age(_age){}
	friend void A::print(const B & b);//申明友元关系
private:
	int age;
};

//第四部定义友元成员函数
void A::print(const B & b)
{
   cout<<"B.age=="<<b.age<<endl;
}


   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值