7
votes

Qu'est-ce que le prépension "::" à un appel de fonction est-il en C ++?

Dupliqué possible:
Quelle est la signification du double côlon préparé ": : "Nom du cours?

Je cherche un code de C ++ hérité et il avait quelque chose comme ceci: xxx

Qu'est-ce que cette syntaxe de préparateur "::" aux appels de fonction signifie? Google-fu me manque.


0 commentaires

6 Réponses :


2
votes

Cela signifie: recherchez la fonction dans l'espace de noms global.


0 commentaires

1
votes

Il utilisera le nom spécifiquement non qualifié (par opposition à tout élément importé avec le en utilisant le mot-clé ).


0 commentaires

7
votes

é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
}


0 commentaires

7
votes

Cela signifie que les fonctions putenv () et tzset () seront considérées par le compilateur dans l'espace de noms global.

Exemple xxx


0 commentaires

3
votes

Il y avait une discussion hier (+ un an) sur une question similaire. Peut-être que vous pouvez trouver une réponse plus approfondie ici.

Quelle est la signification du double achète Colon "::"?


4 commentaires

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 drapeau des messages :). Vous avez besoin de 50 représentants pour commenter partout.



0
votes

Le :: code> est l'opérateur de résolution de la portée, il indique au compilateur dans quelle portée pour trouver la fonction.

Par exemple, si vous avez une fonction avec une variable locale 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;
}


0 commentaires