這裡重新將類的成員函式的定義看一下:
百科上的認識:
類的成員函式的原型要寫在類體中,原型說明了函式的參數列和返回值型別。而函式的定義一般在類外面,也可以直接在類內部定義。前者與普通函式不同的是,實現成員函式時要指明類的名稱,具體形式為:
這裡在百科上對友元函式的解釋:
友元函式是指某些雖然不是類成員卻能夠訪問類的所有成員的函式。類授予它的友元特別的訪問權。通常同乙個開發者會出於技術和非技術的原因,控制類的友元和成員函式(否則當你想更新你的類時,還要徵得其它部分的擁有者的同意)。
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...