Heim > Backend-Entwicklung > C++ > Hauptteil

Ausführliche Erklärung der C++-Friend-Funktionen: Was ist der Unterschied zwischen Friend-Funktionen und Member-Funktionen?

王林
Freigeben: 2024-04-29 08:27:01
Original
1069 Leute haben es durchsucht

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++ 友元函数详解:友元函数和成员函数的区别?

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();
  ...
};
Nach dem Login kopieren

成员函数

成员函数是属于类的函数,可以访问其私有和保护成员。

语法:

class MyClass {
  void myMemberFunction();
  ...
};
Nach dem Login kopieren

友元函数和成员函数的区别

特征友元函数成员函数
可访问性可以访问类的私有和保护成员可以访问类的所有成员
声明位置在类外部在类内部
作用域全局类内部
调用方式像普通函数一样调用使用类对象调用

实战案例

考虑一个 Student 类,它具有私有的 marks 成员:

class Student {
private:
  int marks;
  ...
};
Nach dem Login kopieren

我们可以使用友元函数 calculateAverage() 来计算学生的平均成绩,该函数可以访问 marks

// 友元函数
friend double calculateAverage(Student& student);

// 计算学生的平均成绩
double calculateAverage(Student& student) {
  return student.marks / 3;
}
Nach dem Login kopieren

我们也可以使用成员函数来计算平均成绩,但它只能在 Student

Syntax:

// 类的成员函数
double getAverage() {
  return marks / 3;
}
Nach dem Login kopieren
Member-Funktionen

Member-Funktionen sind Funktionen, die zu einer Klasse gehören und Zugriff auf deren private und geschützte Mitglieder haben. 🎜🎜Grammatik: 🎜rrreee🎜🎜Der Unterschied zwischen Freundfunktionen und Mitgliedsfunktionen🎜🎜 Geltungsbereich
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
🎜🎜Praktischer Fall🎜🎜🎜Stellen Sie sich eine 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!