1. 程式人生 > >友元函數和友元類

友元函數和友元類

private 私有 友元 col vat main 受限 div tex

友元全局函數以及友元成員函數

關鍵字: friend

class A{
//友元全局函數
friend void printXY(A & a);
//友元成員函數,是B的成員函數
friend void B::printXY(A & a);
public:
A(int a,int b){}

private:
int m_a;
int m_b;

};

class B{
 public:
void printXY(A & a){
    cout<< a.m_a<<endl;
    cout<< a.m_b<<endl;
    }
}
int main(){ void printXY(A & a){ cout<< a.m_a<<endl; cout<< a.m_b<<endl; }

友元函數的作用:可以通過全局函數或者其他類的成員函數,訪問類中的私有成員變量。

友元類

//聲明一下A類
class A;
//定義友元類
class B{
friend A;
public:
  B(int x, int y){}
private:
  int _x;
  int _y;
};
class A{
public:
  void printXY(){
    cout
<<b._x<<b._y<<endl; } private: B b; };

通過友元類可以直接訪問友元類中的私有成員變量

關於友元的註意事項

  • 友元關系不可傳遞
  • 友元關系的單向性
  • 友元的申明的形式以及數量不受限制
  • 友元是封裝的一種補充,是不得已而為之的,不是一種很好的語法

友元函數和友元類