首頁  >  文章  >  後端開發  >  C++ 友元函數詳解:友元函數在存取私有成員時的限制?

C++ 友元函數詳解:友元函數在存取私有成員時的限制?

PHPz
PHPz原創
2024-04-29 12:15:01268瀏覽

友元函數可以存取私有成員,但受限:只能存取目前類別(不能存取繼承類別)的私有成員,且不能直接修改。在實戰中,友元函數可透過引用或指標存取私有成員,例如存取 Student 類別的私有成員 name 並列印學生資訊。

C++ 友元函数详解:友元函数在访问私有成员时的限制?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn