C 中友元函數存取私有成員的方法有兩種:在類別內宣告友元函數。宣告一個類別作為友元類,該類別中所有的成員函數都可以存取另一個類別的私有成員。
C 友元函數存取私有成員的方法
友元函數是一種在類別外部定義,但可以訪問類別私有成員的函數。有兩種方法可以實作友元函數對私有成員的存取:
1. 宣告友元函數
在類別內宣告友元函數,語法如下:
class ClassName { public: // 类成员... // 声明友元函数 friend void friend_function(); };
這樣,宣告的友元函數就可以存取該類別的私有成員。
2. 宣告友元類別
宣告一個類別作為友元類,該類別中所有的成員函數都可以存取另一個類別的私有成員。語法如下:
class ClassName1 { public: // 类成员... // 声明友元类 friend class ClassName2; };
所有宣告在 ClassName2
中的成員函數都可以存取 ClassName1
的私有成員。
實戰案例
考慮以下C 程式碼:
class Person { private: int age; string name; public: // 友元函数 friend void print_person_info(const Person& person); // 访问私有成员的友元函数 void print_info() const { cout << "Name: " << name << endl; cout << "Age: " << age << endl; } }; // 友元函数外部分类的定义 void print_person_info(const Person& person) { cout << "Name: " << person.name << endl; cout << "Age: " << person.age << endl; } int main() { Person person; person.name = "John"; person.age = 30; person.print_info(); print_person_info(person); return 0; }
在這個範例中,print_person_info
函數是友元函數,它可以存取Person
類別的私有成員。在 Person
類別中,print_info
函數也存取私有成員,它使用了友元函數宣告。
運行以上程式碼將輸出:
Name: John Age: 30 Name: John Age: 30
以上是C++ 友元函式如何存取私有成員?的詳細內容。更多資訊請關注PHP中文網其他相關文章!