Sichtbarkeitsbereich von Inline-Friend-Funktionen
Obwohl Inline-Friend-Funktionen innerhalb einer Klasse definiert werden, geht ihr tatsächlicher Umfang über die Grenzen der Klasse hinaus. Der C-Standard schreibt vor, dass sich der Name einer Inline-Friend-Funktion auf eine Funktion bezieht, die im nächstgelegenen umschließenden Namespace-Bereich deklariert ist.
Auf diese deklarierte Funktion kann jedoch nicht durch unqualifizierte oder qualifizierte Suche zugegriffen werden, bis eine passende Deklaration innerhalb dieses Namespaces bereitgestellt wird Umfang. Folglich führen direkte Aufrufe der Friend-Funktion aus der Klasse selbst, dem umschließenden Bereich oder Mitgliedsfunktionen zu Fehlern.
Diese Einschränkung ergibt sich aus der Tatsache, dass die Friend-Funktion in der Klasse deklariert wird, ohne eine zu überschreiben oder neu zu definieren vorhandener Funktionsname. Daher erkennt der Compiler die Funktion in der Klasse oder dem umschließenden Namespacebereich erst, wenn er auf eine explizite Deklaration in diesem Namespace trifft.
Um auf die Inline-Friend-Funktion zuzugreifen, können Sie die argumentabhängige Suche (ADL) verwenden. . ADL ermöglicht dem Compiler die Suche nach der Funktion basierend auf den Typen der im Aufruf verwendeten Argumente. Dieser Ansatz entspricht dem Prinzip, dass die Funktion als „bezogen“ auf den als Argument übergebenen Typ betrachtet wird.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3