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

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

Susan Sarandon
Freigeben: 2024-11-05 15:45:02
Original
795 Leute haben es durchsucht

How to Access Friend Functions Defined Within a Class?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

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