友元函數和友元類
阿新 • • 發佈:2018-09-15
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; };
通過友元類可以直接訪問友元類中的私有成員變量
關於友元的註意事項
- 友元關系不可傳遞
- 友元關系的單向性
- 友元的申明的形式以及數量不受限制
- 友元是封裝的一種補充,是不得已而為之的,不是一種很好的語法
友元函數和友元類