程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++友元函數基本應用方式解析

C++友元函數基本應用方式解析

編輯:C++入門知識

在C++編程語言中,有很多功能及應用方式與其他編程語言大不相同,而且使用方式靈活,可以使程序員大大提高編程效率。在這裡我們將會針對C++友元函數的基本概念進行一個詳細的介紹。

  • C++虛構函數給我們帶來哪些好處
  • C++位操作基本含義詳解
  • C++ Endian具體操作方法講解
  • C++ switch-case語句應用經驗講解
  • C++連接MySqL數據庫操作代碼解讀

定義:允許一個類將對其非公有成員的訪問權授予指定的類或函數分別是友元類和C++友元函數)。

說明:友元是非成員函數,即它並不是授予友元關系的那個類的成員,它的聲明可以出現在類中的任何地方因此它們也不受其聲明出現部分的訪問控制的影響)

編程風格:雖然友元的聲明可以出現在類中任何地方,但是將友元聲明成組的放在類定義的開始或者結尾是個好主意。

注:1、當將類A的成員函數F聲明為類B的友元時,必須在B的定義中將F用A限定。

2、C++友元函數只能訪問對象的私有成員,不能直接訪問類的私有成員因此在調用友元時,必須在實參中指定友元要訪問的類的對象)。

兩個性質:

1、不具有傳遞性。

即:假設B是A的友元類,C是B的C++友元函數,那麼C不能直接訪問A的私有成員。

2、不具有繼承性。

即:假設B是基類A的友元函數,C是A的繼承類,那麼B不能直接訪問C的私有成員。

如果派生類想要將自己成員的訪問權授予其基類的友元,派生類必須顯式地這樣聲明友元。 //基類的友元對從該基類派生的類型沒有特殊訪問權限。

  1. class A  
  2. {  
  3. friend class C;  
  4. }  
  5. class B : public A  
  6. {  
  7. friend class C; //friend 無法繼承  
  8. }  
  9. class C  
  10. {  

同樣,如果基類和派生類都需要訪問另一個類,則那個類必須特地將訪問權限授予基類和每一個派生類.

  1. class A  
  2. {  
  3. }  
  4. class B : public A  
  5. {  
  6. }  
  7. class C  
  8. {  
  9. friend class A;  
  10. friend class B;  

以上就是對C++友元函數的相關概念介紹。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved