Aide :: en C++

Je suis en train d'apprendre le C++, et je ne peux jamais dire quand j'ai besoin d'utiliser :: . Je sais que j'ai besoin d'utiliser std:: en face de cout et cin. Est-ce à dire qu'à l'intérieur de la iostream fichier les développeurs qui l'a créé, il a fait un espace de noms appelé std et de mettre les fonctions cin et cout dans l'espace de noms appelé std? Lorsque j'ai créé une nouvelle classe qui n'est pas dans le même fichier que main() pour une raison que je doit ajouter :: .

Par exemple, si je crée un class appelé A , pourquoi dois-je mettre A:: en face d'une fonction que je fais, même si je n'ai pas la mettre dans une namesace? Par exemple void A::printStuff(){} . Si je créer une fonction dans main, pourquoi n'ai-je pas mettre main::printStuf{}?

Je sais que ma question est probablement source de confusion, mais quelqu'un pourrait-il m'aider?

Une amende question, mais un peu trop large (OMI). Cela s'appelle la portée de la résolution de l'opérateur, et votre terme de recherche pour la poursuite de l'apprentissage est portée. Tous ces noms (cout, les fonctions de membre de A) sont définies dans étendues et vous avez à résoudre la portée (c'est-à, dire au compilateur où chercher) avec ::.
Le préfixe de :: peut être soit un espace de noms ou d'une classe. Depuis main est ni (c'est une fonction), main::printStuff serait incorrect.
:: donne une idée de la propriété aussi, lorsqu'une définition est une partie d'une classe ou d'un espace de noms, vous devez utiliser :: pour y accéder... pas exactement, mais qui donne une sensation.
cout et cin ne sont pas des fonctions, elles sont des objets.

OriginalL'auteur foobar5512 | 2013-03-26