Heim > Backend-Entwicklung > C++ > Hauptteil

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

WBOY
Freigeben: 2024-04-28 21:42:02
Original
1158 Leute haben es durchsucht

Friend-Funktionen können auf private und geschützte Datenmitglieder der Klasse zugreifen, globale Funktionen können jedoch nicht in der Klassendeklaration deklariert werden, und globale Funktionen werden außerhalb der Klasse deklariert. Verwenden Sie das Schlüsselwort Friend, um Friend-Funktionen zu deklarieren Schlüsselwort zum Deklarieren globaler Funktionen. Friend-Funktionen erhalten die Berechtigung zum Zugriff auf Klassenmitgliedsvariablen durch Deklaration. Durch die Deklaration einer Friend-Funktion getPrivateData können Sie beispielsweise auf die private Variable x der MyClass-Klasse zugreifen.

C++ 友元函数详解:友元函数和全局函数的区别?

C++ Detaillierte Erklärung der Friend-Funktionen

Der Unterschied zwischen Friend-Funktionen und globalen Funktionen

In C++ ist eine Friend-Funktion eine spezielle Funktion, die auf private Funktionen zugreifen kann, die in einer Klassenmitgliedsfunktion deklariert und geschützt sind Datenelemente. Im Gegensatz dazu werden globale Funktionen außerhalb der Klasse deklariert und haben keinen Zugriff auf private und geschützte Datenelemente.

Syntax der Friend-Funktion

Die Syntax der Friend-Funktion lautet wie folgt:

friend 返回类型 函数名(参数列表);
Nach dem Login kopieren

Deklarieren Sie beispielsweise eine Friend-Funktion, die auf private Datenelemente in MyClass zugreifen kann: MyClass 中私有数据成员的友元函数:

friend int getPrivateData(MyClass& object);
Nach dem Login kopieren

友元函数和全局函数的区别

友元函数和全局函数的主要区别如下:

  • 访问范围:友元函数可以访问类中的私有和受保护的数据成员,而全局函数不能。
  • 作用域:友元函数可以在类的声明中声明,而全局函数在类外声明。
  • 声明方式:友元函数使用 friend 关键字声明,而全局函数使用 extern 关键字声明。

实战案例

考虑一个包含私有成员变量 xMyClass 类:

class MyClass {
private:
    int x;
public:
    int getX();
    void setX(int value);
};
Nach dem Login kopieren

要访问 MyClass 的私有数据成员 x,我们可以声明一个友元函数:

friend int getPrivateData(MyClass& object) {
    return object.x;
}
Nach dem Login kopieren

使用友元函数

我们可以使用友元函数来访问 MyClass

int main() {
    MyClass object;
    object.setX(10);
    int privateData = getPrivateData(object);
    cout << "Private data: " << privateData << endl;
    return 0;
}
Nach dem Login kopieren

Friend Der Unterschied zwischen Funktionen und globalen Funktionen

🎜🎜Die Hauptunterschiede zwischen Friend-Funktionen und globalen Funktionen sind wie folgt: 🎜
  • 🎜Zugriffsbereich: 🎜Friend-Funktionen können auf private und geschützte Datenelemente in der Klasse zugreifen, während sie global sind Funktionen Funktionen können nicht.
  • 🎜Geltungsbereich: 🎜Friend-Funktionen können in der Deklaration der Klasse deklariert werden, während globale Funktionen außerhalb der Klasse deklariert werden.
  • 🎜Deklarationsmethode: 🎜Friend-Funktionen werden mit dem Schlüsselwort friend deklariert, während globale Funktionen mit dem Schlüsselwort extern deklariert werden.
🎜🎜Praktischer Fall🎜🎜🎜Stellen Sie sich eine MyClass-Klasse vor, die eine private Mitgliedsvariable x enthält: 🎜
Private data: 10
Nach dem Login kopieren
🎜Um auf MyClasss privates Datenmitglied <code>x können wir eine Friend-Funktion deklarieren: 🎜rrreee🎜🎜Mit Friend-Funktionen🎜🎜🎜Wir können Friend-Funktionen verwenden, um auf MyClass zuzugreifen. s privates Datenelement: 🎜rrreee🎜Beim Ausführen dieses Codes wird Folgendes ausgegeben: 🎜rrreee

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der C++-Friend-Funktionen: Was ist der Unterschied zwischen Friend-Funktionen und globalen 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