Std::string& en c++
Résolu3 réponses
std:: désigne le namespace std et string ici désigne une classe appelée "string".
C'est le namespace utilisé par la STL :
https://forums.commentcamarche.net/forum/affich-37604421-introduction-a-la-stl-en-c-standard-template-library
Dans l'idée cela signifie que dans le header <string> est déclarée la classe string :
L'intérêt d'un namespace est d'éviter les collisions avec des classes provenant d'une autre librairie ou de ton programme si certaines d'entre elles portent le même nom.
Note que dans un namespace on peut déclarer aussi des variables (std::cin, std::cout, std::cerr par exemple pour les flux standards) des constantes (std::endl pour le retour à la ligne).
On peut également imbriquer des namespaces les uns dans les autres.
En gros tu peux voir "::" un peu comme "/" quand on parle d'un chemin pour un fichier. À noter que "::" sert pour d'autres choses aussi en C++ (par exemple, accéder à un typedef ou un membre ou une fonction statique déclaré dans une classe).
Ensuite l'opérateur & désigne ici une référence. C'est un peu comme un pointeur en C, sauf que contrairement à un pointeur, une référence est toujours initialisée. Syntaxiquement une référence se manipule "comme si" on manipulait la variable elle même
Les références sont massivement utilisées en C++ surtout quand il s'agit de passer des paramètres à une fonction. C'est en pratique moins coûteux qu'un passage par recopie (= par valeur) et syntaxiquement plus léger qu'un passage par pointeur. Plus de détails ici :
https://forums.commentcamarche.net/forum/affich-27614885-c-est-quoi-la-difference-entre-passage-par-reference-et-passage
Bonne chance
C'est le namespace utilisé par la STL :
https://forums.commentcamarche.net/forum/affich-37604421-introduction-a-la-stl-en-c-standard-template-library
Dans l'idée cela signifie que dans le header <string> est déclarée la classe string :
namespace std { class string { //... }; }
L'intérêt d'un namespace est d'éviter les collisions avec des classes provenant d'une autre librairie ou de ton programme si certaines d'entre elles portent le même nom.
Note que dans un namespace on peut déclarer aussi des variables (std::cin, std::cout, std::cerr par exemple pour les flux standards) des constantes (std::endl pour le retour à la ligne).
On peut également imbriquer des namespaces les uns dans les autres.
namespace a { namespace b { class C { C() {} }; } } int main() { a::b::C c; return 0; };
En gros tu peux voir "::" un peu comme "/" quand on parle d'un chemin pour un fichier. À noter que "::" sert pour d'autres choses aussi en C++ (par exemple, accéder à un typedef ou un membre ou une fonction statique déclaré dans une classe).
Ensuite l'opérateur & désigne ici une référence. C'est un peu comme un pointeur en C, sauf que contrairement à un pointeur, une référence est toujours initialisée. Syntaxiquement une référence se manipule "comme si" on manipulait la variable elle même
#include <iostream> int main() { int x = 7; int & r = x; r = 8; std::cout << "x = " << x << std::endl; // affiche 8 return 0; }
Les références sont massivement utilisées en C++ surtout quand il s'agit de passer des paramètres à une fonction. C'est en pratique moins coûteux qu'un passage par recopie (= par valeur) et syntaxiquement plus léger qu'un passage par pointeur. Plus de détails ici :
https://forums.commentcamarche.net/forum/affich-27614885-c-est-quoi-la-difference-entre-passage-par-reference-et-passage
Bonne chance