En C ++, à quoi sert l'opérateur de résolution de portée lorsqu'il est utilisé sans portée? Par exemple:
::foo();
En C ++, à quoi sert l'opérateur de résolution de portée lorsqu'il est utilisé sans portée? Par exemple:
::foo();
Cela signifie une portée mondiale. Vous devrez peut-être utiliser cet opérateur lorsque des fonctions ou des variables en conflit ont la même étendue et que vous devez utiliser une variable globale. Vous pourriez avoir quelque chose comme (cela ne compilera probablement pas!):
void bar(); // this is a global function
class foo {
void some_func() { ::bar(); } // this function is calling the global bar() and not the class version
void bar(); // this is a class member
};
Si vous avez besoin d'appeler la fonction globale bar () depuis une fonction membre de la classe, vous devez utiliser :: bar () pour obtenir la version globale de la fonction.
Notez également que cette résolution de nom se produit avant la résolution de surcharge. Donc, s'il y a quelque chose du même nom dans votre portée actuelle, il cessera de rechercher d'autres noms et tentera de les utiliser.
void bar() {};
class foo {
void bar(int) {};
void foobar() { bar(); } // won't compile needs ::bar()
void foobar(int i) { bar(i); } // ok
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.