友元函數可以存取私有成員,但受限:只能存取目前類別(不能存取繼承類別)的私有成員,且不能直接修改。在實戰中,友元函數可透過引用或指標存取私有成員,例如存取 Student 類別的私有成員 name 並列印學生資訊。
C 友元函數詳解:存取私有成員的限制
##什麼是友元函數?
友元函數是不屬於任何類別的函數,但可以存取該類別中宣告的所有成員(包括私有成員)。友元函數允許不同類別之間的密切交互,並實現封裝類別的靈活使用。友元函數存取私有成員的限制
友元函數存取私有成員時存在一些限制:實戰案例
假設我們有一個Student 類,它有一個私有成員
name 和一個公有成員
getAge()。我們建立一個友元函數
printStudentInfo() 來存取私有成員
name 並列印學生資訊。
class Student { private: string name; public: int getAge(); // 声明友元函数 friend void printStudentInfo(const Student& student); }; void printStudentInfo(const Student& student) { // 可以访问私有成员 cout << "Name: " << student.name << endl; // 不能修改私有成员 // student.name = "John Doe"; // 错误 } int main() { Student student1; student1.setName("Jane Doe"); printStudentInfo(student1); return 0; }
輸出:
Name: Jane Doe
printStudentInfo() 可以存取私有成員
name ,但不能修改它。另外,要注意的是,友元函數只能透過引用或指標存取類別的成員,不能直接使用物件成員。
以上是C++ 友元函數詳解:友元函數在存取私有成員時的限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!