類的友元。
C++為解決效率的需要,提出了一個友元的概念。
只要把某個類外函數聲明為該類的友元,就可以直接訪問類中的任何成員(public,protect,private)
也就相當於說,開放了一個後門,既然是開後門,那麼自然是在該類裡面說明。
所以,所有的友元聲明都應該在該類中。
1)將普通函數聲明為類的友元,
如:};
2)將某個類聲明為本類的友元類
如:};
3)將某個類的成員函數聲明為本類的友元函數, 開放權限給某個成員函數
參考代碼如下:
#include
using namespace std;
class A; // 因為在類A的定義之前,類B用到了A,所以要先在這裡做引用性聲明
class B
{
public:
void showA(A &a);
};
class A
{
private:
int id;
public:
A(int id):id(id){};
// 注意:開放給其他類,那麼其他類必須在此前已經有完整定義了!
friend void B::showA(A &a); // 要通過‘::’運算符表示開放權限給哪個類的成員函數
};
// 友元的成員函數,必須定義在該類的後面,不然找不到A的定義
void B::showA(A &a)
{
cout<
}
int main()
{
A a(1);
B b;
b.showA(a);
return 0;
}
1)友元都聲明在類中,只是說明友元函數,友元類有權訪問類的所有成員,但並不表明友元函數和友元類屬於該類的成員。
2) 友元聲明不受權限的限制,聲明在哪一行都行。
3)用friend 修飾,一般使用對象的別名作為參數