Dupliqué possible: strong>
Quelle est la signification du double côlon préparé ": : "Nom du cours? P>Je cherche un code de C ++ hérité et il avait quelque chose comme ceci: p>
xxx pré> Qu'est-ce que cette syntaxe de préparateur "::" aux appels de fonction signifie? Google-fu me manque. P> blockQquote>
6 Réponses :
Cela signifie: recherchez la fonction dans l'espace de noms global. P>
Il utilisera le nom spécifiquement non qualifié (par opposition à tout élément importé avec le en utilisant le mot-clé code>). p>
également appelé Opérateur de résolution de la portée
in c ++ est utilisé pour définir les fonctions de membre déjà déclarées (dans le fichier d'en-tête avec le .HPP ou l'extension .h) d'une classe particulière. Dans le fichier .CPP, on peut définir les fonctions globales habituelles ou la Fonctions membres de la classe. Différencier entre la normale fonctions et fonctions membres de la classe, il faut utiliser le Opérateur de résolution de la portée (: :) entre le nom de la classe et le Nom de la fonction de membre I.e. Navire :: FOO () Où le navire est une classe et foo () est une fonction membre du navire de classe. P> blockQuote>
Exemple de Wikipedia: P>
#include <iostream> // Without this using statement cout below would need to be std::cout using namespace std; int n = 12; // A global variable int main() { int n = 13; // A local variable cout << ::n << endl; // Print the global variable: 12 cout << n << endl; // Print the local variable: 13 }
Cela signifie que les fonctions Exemple forte> p> putenv () code> et
tzset () code> seront considérées par le compilateur dans l'espace de noms global.
Il y avait une discussion hier (+ un an) sur une question similaire. Peut-être que vous pouvez trouver une réponse plus approfondie ici. P>
Vous auriez dû marquer cela comme un duplicata.
Je ne sais pas comment signaler un poste ou comment ajouter une réponse sous la question comme vous l'avez fait. Pourrait avoir quelque chose à voir avec ne pas avoir assez de représentant à éditer.
@stanek - +1 pour élever le représentant :)
+1, maintenant, vous avez assez de représentant pour upvote et i> drapeau des messages :). Vous avez besoin de 50 représentants pour commenter partout.
Le Par exemple, si vous avez une fonction avec une variable locale :: code> est l'opérateur de résolution de la portée, il indique au compilateur dans quelle portée pour trouver la fonction.
var Et vous avez une variable globale du même nom, vous pouvez choisir d'accéder à la Global One en préparé l'opérateur de résolution de la portée: P>
int var = 0;
void test() {
int var = 5;
cout << "Local: " << var << endl;
cout << "Global: " << ::var << endl;
}