C 友元函數是一種特殊函數,可存取另一個類別的私有和受保護成員。透過聲明友元函數,非成員函數可以與特定類別互動。友元函數的應用包括運算元重載、I/O 操作和底層實作。例如,友元函數可用來重載運算符,支援自訂資料型別之間的運算,如以下案例所示:class Vector { public: friend Vector operator (const Vector& v1, const Vector& v2); };
C 友元函數詳解:在物件導向設計中的應用
什麼是友元函數?
在 C 中,友元函數是一種特殊的函數,它被授予存取另一個類別的私有和受保護成員的權限。這使得非成員函數可以與特定類別進行交互,而不必聲明為該類別的成員函數。
如何宣告友元函數?
有兩種方法可以宣告友元函數:
class MyClass { friend void myFriendFunction(); };
friend
關鍵字宣告:class MyClass; // 前向声明 void myFriendFunction() { MyClass obj; // 访问 MyClass 的私有成员 }
友元函數的應用程式
友元函數在物件導向設計中有多種應用,包括:
和*
,以支援自訂資料類型之間的運算。 4737a824afe266ba350a4f8b14c8218b>
,以簡化物件序列化。 實戰案例:操作符重載
以下程式碼範例展示如何使用友元函數來重載
運算符,以支持兩個Vector
物件的加法:
class Vector { int x, y; public: Vector(int _x, int _y) : x(_x), y(_y) {} friend Vector operator+(const Vector& v1, const Vector& v2); }; Vector operator+(const Vector& v1, const Vector& v2) { return Vector(v1.x + v2.x, v1.y + v2.y); } int main() { Vector v1(1, 2), v2(3, 4); Vector v3 = v1 + v2; // 使用重载的 + 运算符 return 0; }
在上面的範例中,operator
函數是友元函數,它允許非成員函數存取Vector
類別的私有資料成員x
和y
。
以上是C++ 友元函數詳解:友元函數在物件導向設計中的應用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!