c++友元

来源:互联网 发布:效能日程提醒软件 编辑:程序博客网 时间:2024/05/17 07:08

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

    友元用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;}