Pourquoi C utilise-t-il l'opérateur de résolution de portée (::) ?
Contrairement à Java, C utilise l'opérateur de résolution de portée (::) comme un symbole distinct. Cet opérateur a un objectif spécifique en dissipant l'ambiguïté de la syntaxe du code.
À l'origine, la justification derrière :: découlait de la nécessité d'accommoder des structures de code telles que :
struct foo { int blah; }; struct thingy { int data; }; struct bar : public foo { thingy foo; }; int main() { bar test; test.foo.data = 5; test.foo::blah = 10; return 0; }
Dans cet exemple, le '. ' L'opérateur aurait provoqué une ambiguïté, car les deux "foo" représentent des entités différentes (une variable membre et un type de classe dérivé). Pour résoudre ce problème, utilisez :: pour l'accès aux classes et '.' pour l'accès des membres a été introduit.
En utilisant un opérateur distinct, C garantit que le compilateur peut déterminer sans ambiguïté le contexte (objet ou nom de type/espace de noms) dans lequel l'identifiant est utilisé. Cette différenciation permet une syntaxe comme la suivante :
foo::bar; // Class access thing.baz; // Member access
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!