Maison > développement back-end > C++ > Comment accéder aux fonctions Inline Friend en C ?

Comment accéder aux fonctions Inline Friend en C ?

Barbara Streisand
Libérer: 2024-12-01 07:55:16
original
668 Les gens l'ont consulté

How Can Inline Friend Functions Be Accessed in C  ?

Accès aux fonctions d'ami en ligne : portée lexicale et réelle

Lors de la déclaration des fonctions d'ami en ligne au sein d'une classe, il est important de prendre en compte non seulement leur lexical portée mais aussi leur portée réelle. Lexicalement, ces fonctions résident dans la classe dans laquelle elles sont définies. Cependant, leur accessibilité réelle peut être limitée en fonction du contexte.

Conformément à la norme C (ISO/IEC 14882:2011), lorsqu'un ami La fonction est déclarée avec un identifiant non qualifié dans une classe, elle fait référence à une fonction dans la portée de l'espace de noms englobant la plus proche. Cependant, cette déclaration d'ami ne rend pas cette fonction visible pour une recherche normale dans cette portée. Au lieu de cela, il le rend accessible uniquement via une recherche dépendante des arguments (ADL).

Ce comportement est souligné dans 7.3.1.2/3 de la norme :

"Si une déclaration d'ami dans un non -la classe locale déclare d'abord une classe ou une fonction, la classe ou la fonction amie est membre de l'espace de noms englobant le plus interne. Le nom de l'ami n'est pas trouvé par recherche non qualifiée ou par recherche qualifiée jusqu'à ce qu'une recherche non qualifiée soit effectuée. La déclaration correspondante est fournie dans la portée de cet espace de noms. Par conséquent, les tentatives d'appel de telles fonctions directement via la portée englobante de la classe ou via des fonctions membres entraîneront des erreurs de compilation, comme le démontrent les exemples de code fournis.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal