友元函數可存取類別私有和受保護資料成員,而全域函數不行,友元函數在類別聲明中聲明,全域函數在類別外聲明,使用friend 關鍵字聲明友元函數,用extern 關鍵字聲明全域函數。友元函數透過宣告方式取得存取類別成員變數的權限,例如透過宣告一個友元函數 getPrivateData 可以存取 MyClass 類別私有變數 x。
C 友元函數詳解
#友元函數與全域函數的差異
在C 中,友元函數是一種特殊的函數,它可以存取類別成員函數中宣告的私有和受保護的資料成員。相較之下,全域函數在類別外聲明,無法存取私有和受保護的資料成員。
友元函數的語法
友元函數的語法如下:
friend 返回类型 函数名(参数列表);
例如,宣告一個可以存取MyClass
中私有資料成員的友元函數:
friend int getPrivateData(MyClass& object);
友元函數與全域函數的差異
友元函數與全域函數的主要差異如下:
friend
關鍵字聲明,而全域函數使用 extern
關鍵字聲明。 實戰案例
考慮一個包含私有成員變數x
的MyClass
類別:
class MyClass { private: int x; public: int getX(); void setX(int value); };
要存取MyClass
的私有資料成員x
,我們可以宣告一個友元函數:
friend int getPrivateData(MyClass& object) { return object.x; }
使用友元函數
我們可以使用友元函數來存取MyClass
的私有資料成員:
int main() { MyClass object; object.setX(10); int privateData = getPrivateData(object); cout << "Private data: " << privateData << endl; return 0; }
執行此程式碼將輸出:
Private data: 10
以上是C++ 友元函數詳解:友元函數和全域函數的差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!