c 友元類 友元函式

2021-07-05 02:01:32 字數 706 閱讀 1624

c++類機制實現了資料的隱藏與封裝,類的資料成員一般定義為私有成員,成員函式一般定義為公有的。有時需要定義一些函式,這些函式不是類的一部分,但又需要頻繁地訪問類的資料成員,這時可以將這些函式定義為該類的友元函式。除了友元函式外,還有友元類,兩者統稱為友元。友元的作用是提高了程式的執行效率(即減少了型別檢查和安全性檢查等都需要時間開銷),但它破壞了類的封裝性和隱藏性,使得非成員函式可以訪問類的私有成員。

友元函式:

友元函式是在類外定義的普通函式,它不屬於任何類,需要在類的定義中加以宣告,其格式為   friend 型別 函式名(形參)

友元函式放在類的公有部分和私有部分沒有區別。

乙個函式可以是多個類的友元函式,只需要在各個類中分別宣告。

友元函式的呼叫與一般函式的呼叫方式和原理是一樣的。

友元類:

友元類的所有成員函式都是另乙個類的友元函式,都可以訪問另乙個類中的隱藏資訊(包括私有成員和保護成員),宣告放在公有部分和私有部分沒有區別。定義友元類的格式: friend  calss  類名。

使用友元類時要注意:

(1)友元關係不能被繼承

(2)友元關係是單向,不具有交換性。類b是類a的友元不能說明類a是類b的友元,要看類中是否有相應的宣告。

(3)友元關係不具有傳遞性。類b時類a的友元,類c時類b的友元,不能說明類c是類a的友元,要看類中是否有相應的宣告。

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

C 友元 友元函式 友元類和友元成員函式

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...