Friend-Funktionen ermöglichen externen Funktionen den Zugriff auf private oder geschützte Mitglieder einer Klasse, indem sie sie mit dem Schlüsselwort Friend in der Klassendefinition deklarieren. Im Gegensatz zu Mitgliedsfunktionen werden Friend-Funktionen außerhalb der Klasse deklariert und können auf private und geschützte Mitglieder der Klasse zugreifen, während Mitgliedsfunktionen innerhalb der Klasse deklariert werden und auf alle Mitglieder der Klasse zugreifen können. Friend-Funktionen werden als normale Funktionsaufrufe verwendet, während Member-Funktionen mit Klassenobjekten aufgerufen werden, wenn externer Zugriff auf private oder geschützte Member erforderlich ist, und Member-Funktionen, wenn Member-Funktionen innerhalb der Klasse verwendet werden.
C++ Detaillierte Erklärung der Freundfunktionen: Der Unterschied zwischen Freundfunktionen und Mitgliedsfunktionen
Freundfunktionen
Eine Freundfunktion ist eine spezielle Funktion, die externen Funktionen den Zugriff auf private und geschützte Mitglieder in einer Klasse ermöglicht . Es wird mit dem Schlüsselwort friend
in der Klassendefinition deklariert. friend
关键字声明。
语法:
class MyClass { friend void myFriendFunction(); ... };
成员函数
成员函数是属于类的函数,可以访问其私有和保护成员。
语法:
class MyClass { void myMemberFunction(); ... };
友元函数和成员函数的区别
特征 | 友元函数 | 成员函数 |
---|---|---|
可访问性 | 可以访问类的私有和保护成员 | 可以访问类的所有成员 |
声明位置 | 在类外部 | 在类内部 |
作用域 | 全局 | 类内部 |
调用方式 | 像普通函数一样调用 | 使用类对象调用 |
实战案例
考虑一个 Student
类,它具有私有的 marks
成员:
class Student { private: int marks; ... };
我们可以使用友元函数 calculateAverage()
来计算学生的平均成绩,该函数可以访问 marks
:
// 友元函数 friend double calculateAverage(Student& student); // 计算学生的平均成绩 double calculateAverage(Student& student) { return student.marks / 3; }
我们也可以使用成员函数来计算平均成绩,但它只能在 Student
// 类的成员函数 double getAverage() { return marks / 3; }
Funktionen | Freundfunktionen | Mitgliedsfunktionen |
---|---|---|
Zugänglichkeit | Auf die privaten und geschützten Mitglieder der Klasse kann zugegriffen werden | Die Klasse kann sein Zugriff auf alle Mitglieder |
Deklarationsort | Außerhalb der Klasse | Innerhalb der Klasse |
Global | Interne Klasse | |
Aufrufende Methode | Aufruf wie eine normale Funktion | Klassenobjektaufrufe verwenden |
Student
-Klasse vor, die über einen privaten marks Mitglied: 🎜rrreee🎜Wir können die Friend-Funktion calculateAverage()
verwenden, um die Durchschnittsnote des Schülers zu berechnen, der Zugriff auf noten
hat: 🎜rrreee 🎜 Wir können auch Mitgliedsfunktionen verwenden, um die Durchschnittsnote zu berechnen, diese können jedoch nur in der Klasse Student
verwendet werden: und geschützte Mitglieder einer Klasse, ohne diese Mitglieder für die Außenwelt sichtbar zu machen. Mitgliedsfunktionen haben Zugriff auf alle Mitglieder der Klasse, können jedoch nur innerhalb der Klasse verwendet werden. 🎜Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der C++-Friend-Funktionen: Was ist der Unterschied zwischen Friend-Funktionen und Member-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!