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

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

王林
王林Original
2024-04-29 08:27:011091Durchsuche

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();
  ...
};

成员函数

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

语法:

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

Syntax:

// 类的成员函数
double getAverage() {
  return marks / 3;
}
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!

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