Maison > développement back-end > C++ > Pourquoi C utilise-t-il l'opérateur de résolution de portée (::) alors que Java ne le fait pas ?

Pourquoi C utilise-t-il l'opérateur de résolution de portée (::) alors que Java ne le fait pas ?

Linda Hamilton
Libérer: 2024-11-12 02:58:01
original
375 Les gens l'ont consulté

Why Does C   Use the Scope Resolution Operator (::) While Java Doesn't?

Pourquoi C a introduit l'opérateur de résolution de portée

Par rapport à Java, C fournit un opérateur de résolution de portée distinct (::) au lieu de s'appuyer sur uniquement sur l'opérateur point (.). Malgré le succès de Java sans opérateur distinct, C a nécessité cet ajout en raison d'une fonctionnalité unique du langage : la possibilité d'utiliser le même identifiant pour une variable membre et un type de classe dérivé.

Cette distinction devient évidente lorsque l'on considère le code. comme l'exemple ci-dessous :

struct foo { int blah; };
struct thingy { int data; };
struct bar : public foo { thingy foo; };
Copier après la connexion

Dans ce scénario, la variable membre foo dans la structure bar et le type de classe dérivé foo partagent le même nom. Pour résoudre cette ambiguïté, l'opérateur de résolution de portée :: est utilisé.

Lorsque le compilateur rencontre un ., il suppose que l'opérande de gauche est un objet. En revanche, :: signifie un nom de type, un espace de noms ou l'espace de noms global. Cette différenciation permet au compilateur d'interpréter le code comme suit :

test.foo.data = 5;
test.foo::blah = 10;
Copier après la connexion

Dans la première instruction, test.foo.data est reconnu comme accédant aux données membres de l'objet test.foo. Dans la deuxième instruction, test.foo::blah indique l'accès au membre blah de la classe dérivée foo.

Ainsi, l'opérateur de résolution de portée en C sert d'outil de précision pour résoudre les ambiguïtés créées par l'autorisation de valeurs identiques. identifiants pour les variables membres et les types de classes dérivées.

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