Heim > Backend-Entwicklung > C++ > Wie greife ich auf in einer C-Klasse definierte Friend-Funktionen zu?

Wie greife ich auf in einer C-Klasse definierte Friend-Funktionen zu?

Susan Sarandon
Freigeben: 2024-11-10 08:39:02
Original
543 Leute haben es durchsucht

How to Access Friend Functions Defined in a C   Class?

Zugriff auf in einer Klasse definierte Friend-Funktionen

In C wird Friend-Funktionen Zugriff auf private und geschützte Mitglieder einer Klasse gewährt. Der bereitgestellte Code definiert eine Klasse A mit drei Freundfunktionen: fun, fun2 und fun3. Während auf fun und fun3 problemlos zugegriffen werden kann, gibt es beim Zugriff auf fun2 ein Problem.

Um auf fun2 zuzugreifen, Sie haben zwei Möglichkeiten:

1. Globale Deklaration von Friend-Funktionen:

Sie können Friend-Funktionen im globalen Bereich nach der Klassendefinition deklarieren. Dadurch wird der Compiler darüber informiert, dass eine Funktion extern existiert und ein Freund der Klasse ist. Zum Beispiel:

<code class="cpp">#include <iostream>

class A {
public:
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun(A a) { std::cout << "I'm here" << std::endl; }
void fun2() { std::cout << "I'm here2" << std::endl; }
void fun3() {
    std::cout << "I'm here3" << std::endl;
}

int main() {
    fun(A()); // Works
    fun2(); // Now works
    fun3(); // Works
}</code>
Nach dem Login kopieren

2. Explizite Member-Funktionsaufruf:

Sie können Friend-Funktionen explizit als Member-Funktionen der Klasse aufrufen. Dies erfordert jedoch, dass die Friend-Funktionen als statisch markiert werden (sofern sie keinen this-Parameter haben). Zum Beispiel:

<code class="cpp">#include <iostream>

class A {
public:
    friend static void fun(A a);
    friend static void fun2();
    friend static void fun3();
};

static void fun(A a) { std::cout << "I'm here" << std::endl; }
static void fun2() { std::cout << "I'm here2" << std::endl; }
static void fun3() {
    std::cout << "I'm here3" << std::endl;
}

int main() {
    fun(A()); // Works
    A::fun2(); // Works
    fun3(); // Works
}</code>
Nach dem Login kopieren

Denken Sie daran, dass die Deklaration der Friend-Funktion im globalen Bereich notwendig ist, unabhängig davon, ob explizit oder als statische Mitgliedsfunktion darauf zugegriffen wird.

Das obige ist der detaillierte Inhalt vonWie greife ich auf in einer C-Klasse definierte Friend-Funktionen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage