C 中的友元函數允許非成員函數存取類別的私有和受保護成員,在實現跨類別操作、ADT 和單元測試中十分有用:宣告友元函數:使用friend 關鍵字宣告一個類別外的函數。使用友元函數:直接存取類別的私有成員,就像它是一個成員函數一樣。實戰案例:使用友元函數取得私人年齡訊息,無需公開年齡屬性。
在C 程式設計中,友元函數是一種強大的機制,它允許一個類別之外的函數存取類別的私有和受保護成員。這在某些情況下非常有用,例如:
class MyClass { public: // ... private: // ... friend void print_my_class(const MyClass&); // 声明友元函数 };
上面的程式碼宣告了 print_my_class
作為 MyClass
的友元函數。這意味著 print_my_class
函數可以存取 MyClass
的私有和受保護成員。
要使用友元函數,只需在友元函數中直接存取類別的私有成員即可:
void print_my_class(const MyClass& obj) { std::cout << "Private member: " << obj.private_member << std::endl; std::cout << "Protected member: " << obj.protected_member << std::endl; }
假設我們有一個Person
類,表示一個人,它有一個私有的age
成員。我們想要建立一個友元函數get_age
來取得Person
物件的年齡:
class Person { public: // ... private: int age; friend int get_age(const Person&); // 声明友元函数 }; int get_age(const Person& person) { return person.age; }
在main
函數中,我們建立一個Person
物件並使用友元函數get_age
存取其私有成員:
int main() { Person person(25); std::cout << "Age: " << get_age(person) << std::endl; return 0; }
輸出:
Age: 25
以上是C++ 友元函數詳解:如何使用友元函數進行跨類別存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!