Heim > Artikel > Backend-Entwicklung > Wie greife ich auf in einer C-Klasse definierte Friend-Funktionen zu?
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>
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>
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!