友元friend總結

2021-06-28 22:19:04 字數 2082 閱讀 6489

1.關鍵字friend只出現在類定義的內部(這點與const不同)

2.友元是授予友元關係的那個類的成員

3.定義類b為類a的友元,b可以訪問a的私有成員

[cpp]view plain

copy

print?

例1:/*要注意友元的使用順序,宣告b->定義a->定義b*/

class b;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/

class a    

friend b;/*將b宣告為友元,b可以訪問a的private*/

};    

class b    

int get()    

};    

int main()    

例1:/*要注意友元的使用順序,宣告b->定義a->定義b*/  

class b;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/

class a

friend b;/*將b宣告為友元,b可以訪問a的private*/

};

class b

int get()

};

int main()

};  

class a  

friend

void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/

};  

void b::test(a a)  

int main()    

例2:/*要注意友元的使用順序,

宣告a->定義b(要作為友元的那個函式只宣告不定義)->定義a->定義b的函式*/

class a;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/

class b

};class a

friend void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/

};void b::test(a a)

int main()

;  class c  

};  

class a;  

void f()  

int main()    

/*本來a和f()的作用域只限於在它們宣告之後。

但是因為類b提前引入了它們,使得它們的作用域與類b的作用域相同*/

class b

;class c

};class a;

void f()

};  

class a  

friend

void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/

friend

void b::test(a a1, a a2);  

};  

//正確,因為已經被定義為友元

void b::test(a a)  

//正確,因為已經被定義為友元

void b::test(a a1, a a2)  

//錯誤,不能因為test(a a)是友元,就認為它的過載也是友元

void b::test(a a1, a a2, a a3)  

class a;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/

class b

};class a

friend void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/

friend void b::test(a a1, a a2);

};//正確,因為已經被定義為友元

void b::test(a a)

//正確,因為已經被定義為友元

void b::test(a a1, a a2)

//錯誤,不能因為test(a a)是友元,就認為它的過載也是友元

void b::test(a a1, a a2, a a3)

友元函式 friend

類的外部,也就是通過例項來訪問私有 private 或保護 protected 成員,這是被禁止的。但從實用性來說,的確有時很需要在外部訪問,c 增加了一種稱之為 友元 friend 函式的申明,將 特權 賦給一些函式 可以是全域性函式,也可以是其它類的成員函式 使之能夠訪問該類的私有和保護成員。友...

友元函式 friend

一 乙個類的成員函式有三個互不相干作用 1.可以通過類的成員方法,訪問它的私有資料。2.該函式的作用域在類中。3.在外部調動該函式必須通過成員訪問符訪問,也就是必須經由乙個物件去啟用 有乙個this指標 二 友元函式 1.友元函式作用域不屬於類的作用域,不是類的成員,也就不是類的方法,不受公有 私有...

friend 友元函式友元類

這篇是引用,具體是引用哪位的博主不查了 僅供自己回顧複習用 friend 型別 函式名 形式引數 友元函式的宣告可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的乙個友元函式。乙個函式可以是多個類的友元函式,只需要在各個類中分別宣告。友元函式的呼叫與一般函式的呼叫方式和原理一...