天天看點

C++中的友元函數和友元類

#include <iostream>

using namespace std;

class myClass1

{

public :

  myClass1():n(0){};

  void setn(int tmpn){this->n=tmpn;}

  void show(){cout<<n<<endl;}

private: 

    //友元類

    friend class myClass2;

    //使用友元函數來改變myclass1中成員變量n的值

    friend void setnF1(myClass1 & tmpClass,int tmpn);

    int n;

};

class myClass2

{

public:

    //使用友元類中的成員函數來改變myclass1中成員變量n的值

     void setnF2(myClass1  & tmpClass,int tmpn){tmpClass.n=tmpn;}

};

void setnF1(myClass1 & tmpClass,int tmpn)

{

     tmpClass.n=tmpn;

}

int main()

{

    myClass1 p1;

    myClass2 p2;

    cout<<"p1的成員變量n預設為:"<<endl;

    p1.show();

    cout<<"使用myClass1自己的成員函數設定後:"<<endl;

    p1.setn(100);

    p1.show();

    cout<<"使用友元函數設定後:"<<endl;

    setnF1(p1,101);

    p1.show();

    cout<<"使用友元類設定後:"<<endl;

    p2.setnF2(p1,102);

    p1.show();

    return 0;

}

執行結果:(點選圖檔可放大)

C++中的友元函數和友元類

繼續閱讀