Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der C++-Friend-Funktionen: Welche Einschränkungen gibt es bei Friend-Funktionen beim Zugriff auf private Mitglieder?

Detaillierte Erläuterung der C++-Friend-Funktionen: Welche Einschränkungen gibt es bei Friend-Funktionen beim Zugriff auf private Mitglieder?

PHPz
PHPzOriginal
2024-04-29 12:15:01317Durchsuche

Friend-Funktionen können auf private Mitglieder zugreifen, sind jedoch eingeschränkt: Sie können nur auf private Mitglieder der aktuellen Klasse zugreifen (nicht auf geerbte Klassen) und diese nicht direkt ändern. Im tatsächlichen Kampf können Freundfunktionen über Referenzen oder Zeiger auf private Mitglieder zugreifen, z. B. auf den privaten Mitgliedsnamen der Student-Klasse zugreifen und Schülerinformationen drucken.

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

C++ Friend Function Detaillierte Erklärung: Einschränkungen beim Zugriff auf private Mitglieder

Was ist eine Friend-Funktion?

Eine Friend-Funktion ist eine Funktion, die keiner Klasse angehört, aber auf alle in der Klasse deklarierten Mitglieder zugreifen kann (einschließlich privater Mitglieder). Friend-Funktionen ermöglichen eine enge Interaktion zwischen verschiedenen Klassen und ermöglichen die flexible Nutzung gekapselter Klassen.

Einschränkungen für Freundesfunktionen beim Zugriff auf private Mitglieder

Es gibt einige Einschränkungen, wenn Freundesfunktionen auf private Mitglieder zugreifen:

  • Freundefunktionen können nur auf private Mitglieder der aktuellen Klasse zugreifen und nicht auf private Mitglieder geerbter Klassen.
  • Freundfunktionen können private Mitglieder nicht direkt ändern.

Praktischer Fall

Angenommen, wir haben eine Student-Klasse, die ein privates Mitglied name und ein öffentliches Mitglied getAge() hat . Wir erstellen eine Friend-Funktion printStudentInfo(), um auf das private Mitglied name zuzugreifen und Studenteninformationen auszudrucken. 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() 可以访问私有成员 namerrreee

🎜Ausgabe: 🎜🎜rrreee🎜In diesem Beispiel kann die Freundesfunktion printStudentInfo() auf das private Mitglied name zugreifen, es jedoch nicht ändern. Darüber hinaus ist zu beachten, dass Friend-Funktionen nur über Referenzen oder Zeiger auf Klassenmitglieder zugreifen und Objektmitglieder nicht direkt verwenden können. 🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der C++-Friend-Funktionen: Welche Einschränkungen gibt es bei Friend-Funktionen beim Zugriff auf private Mitglieder?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn