在C 中關於友元函式的進一步理解

2022-10-04 00:09:20 字數 1078 閱讀 4872

這裡重新將類的成員函式的定義看一下:

百科上的認識:

類的成員函式的原型要寫在類體中,原型說明了函式的參數列和返回值型別。而函式的定義一般在類外面,也可以直接在類內部定義。前者與普通函式不同的是,實現成員函式時要指明類的名稱,具體形式為:

這裡在百科上對友元函式的解釋:

友元函式是指某些雖然不是類成員卻能夠訪問類的所有成員的函式。類授予它的友元特別的訪問權。通常同乙個開發者會出於技術和非技術的原因,控制類的友元和成員函式(否則當你想更新你的類時,還要徵得其它部分的擁有者的同意)。

1.為什麼要使用友元函式

優點:能夠提高效率,表達簡單、清晰。

也有缺點:破壞了程式的封裝性。有時候不到萬不得已的時候才使用。

**解釋:

#include www.cppcns.comream>

#include

using namespace std;

class ca

protected:

string name;

void setnamewww.cppcns.com(string s)

public:

void print()

friend void fun(ca& a); //申明全域性函式作友元,允許它訪問私有保護成員

};class derive : public ca ; //ca類的派生類

void fun(ca& a)

int main ( )

執行結果:

987  xyz

987  xyz

在就是友元函式的位置:可以在類外或者類內

宣告方式:friend+普通函式宣告

實現方式:像普通函式那樣直接呼叫

還有一點的是:其實一些操作符的過載實現也是要在類外實現的,那麼通常這樣的話,宣告為類的友元是必須滴。(fgdzjt這就像我學的那個座標類,直接用操作符過載,宣告友元函式)

最後乙個知識點:

友元函式和類的成員函式的區別:

1.成員函式有this指標,而友元函式沒有this指標。

2.友元函式是不能被繼承的,就像父親的朋友未必是兒子的朋友。

總結

巨集的進一步理解

1 條件include 如下 code ifndef main h define main h 其它內容 endif 上面在看到標頭檔案時會看到 作用就是阻止這個標頭檔案被多次include 多次include就會出現重複的定義情況 所以需要在每個標頭檔案中都使用這個定義 如果還不是很了解要怎樣使用...

LiveMesh的進一步理解

月前,microsoft推出了livemesh的tech preview版,那時候初步看了看 覺得不太理解,甚至有些失望 這半年來,我一直安裝著livemesh,也逐漸開始使用它並且逐漸感受到了它的價值,本週終於拿到了live mesh的 sdk 已經改名為azure service live fr...

ajax的進一步理解

上面是請求網頁,在請求網頁中我們用了三個函式createxmlhttp function gettext function ready 他們就組成了我們對應網頁的請求,第乙個函式是建立物件,xmlhttprequest 用於firefox,chorme等瀏覽器,如果用的是ie,我們則用activeo...