友元函式 friend

2021-08-03 11:34:42 字數 1137 閱讀 4305

一、乙個類的成員函式有三個互不相干作用

1.可以通過類的成員方法,訪問它的私有資料。

2.該函式的作用域在類中。

3.在外部調動該函式必須通過成員訪問符訪問,也就是必須經由乙個物件去啟用(有乙個this指標)。

二、友元函式

1.友元函式作用域不屬於類的作用域,不是類的成員,也就不是類的方法,不受公有、私有、保護限制。

2.友元函式可以在類中實現,也可以在類外實現(一般是在類的外部實現)。

3,宣告成友元函式,可以通過友元函式實現對類的私有資料進項訪問。(但是他沒有this指標)

4.一般友元函式宣告在類的最前面

5.友元函式是為另外乙個類的成員方法,則其作用域為另外乙個類的作用域。

6.友元類,在乙個類中宣告為友元類,則該友元類都可以訪問他的私有資料

在類的外部實現,也可以在內部實現

三、輸出運算子<

我們平時可以用流 std::cout<>str>>n ; 輸出、輸入字串和整型等內建型別的值。但是對於我們自定義的類,比如 student 類,卻不能直接通過 cout<>student 這樣的形式來輸出類的內容或給類賦值。怎麼辦呢?我們可以通過過載輸出、輸入運算子,讓自定義的類也支援這樣的操作。

1.在引入iostream標頭檔案,標準的命名空間的後,ostream 輸出流(類),其中cout是它的乙個物件, istream輸入流物件,cin是它的乙個物件。

2.輸入輸出流物件一般只是對內建型別進行輸出,對物件的輸出要進行運算子的過載

3.輸入、輸出運算子的過載,一般通過友元函式,進行實現,友元函式可以訪問乙個類的私有資料,通過友元函式可以實現對類的輸出;

在類中宣告成友元函式才能訪問私有資料

這樣的話調動cout<

4.輸入輸出運算子的過載也可以是類的成員方法,在類的內部實現,只不過輸出格式比較詭異通過類的物件調動cout物件 c<

友元函式 friend

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

friend 友元函式友元類

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

C 之friend友元(友元函式和友元類)

在c 中,類具有封裝性和隱蔽性,類的資料成員一般都定義為私有成員,成員函式一般都定義為公有的,以此提供類與外界的通訊介面。但是,某些成員函式頻繁呼叫時,由於函式引數的傳遞 c 嚴格的型別檢查和安全性檢查將帶來時間的開銷,為了解決這個問題,c 提出了使用友元作為實現這一要求的輔助手段。友元不是類的成員...