Heim >Backend-Entwicklung >C++ >Wie greife ich auf innerhalb einer Klasse definierte Friend-Funktionen zu?
Auf Friend-Funktionen zugreifen, die innerhalb einer Klasse definiert sind
Bei der Arbeit mit Friend-Funktionen ist es wichtig zu verstehen, wie sie definiert sind und auf sie zugegriffen wird. Da Friend-Funktionen keine Mitglieder einer Klasse sind, kann der Zugriff auf sie außerhalb der Klasse besondere Überlegungen erfordern.
Im bereitgestellten Code-Snippet:
<code class="cpp">class A { public: friend void fun(A a){std::cout << "Im here" << std::endl;} friend void fun2(){ std::cout << "Im here2" << std::endl; } friend void fun3(); };</code>
Die Friend-Funktionen fun() und fun3( ) werden innerhalb der Klasse definiert, aber nicht im globalen Bereich deklariert. Während auf fun() aufgrund des Arguments vom Typ A direkt mit Argument-Dependent Lookup (ADL) zugegriffen werden kann, kann auf fun2() nicht ohne eine Deklaration im globalen Bereich zugegriffen werden.
Um auf fun2() korrekt zuzugreifen , sollte es zusätzlich zur Definition als Friend-Funktion innerhalb der Klasse global deklariert werden:
<code class="cpp">class A { public: friend void fun(A a){std::cout << "Im here" << std::endl;} friend void fun2(); friend void fun3(); }; void fun2(){ std::cout << "Im here2" << std::endl; }</code>
In dieser modifizierten Version kann auf fun2() außerhalb der Klasse als gewöhnliche Funktion zugegriffen werden.
Es wird jedoch empfohlen, Friend-Funktionen auf die übliche Weise zu definieren, außerhalb der Klasse, aber als Freunde deklariert:
<code class="cpp">class A { 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();</code>
Dieser Ansatz stellt sicher, dass alle Friend-Funktionen korrekt definiert und deklariert werden, sodass sie zugänglich und zugänglich sind bestimmungsgemäß verwendbar.
Das obige ist der detaillierte Inhalt vonWie greife ich auf innerhalb einer Klasse definierte Friend-Funktionen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!