6.2.4 Enlever les std::

Oui, parce que ça commence à être gonflant.

Oui, je vous l'accorde.

Un peu de vocabulaire :

std:: est un espace de nom, en anglais namespace. Donc pour ne plus avoir à mettre std:: devant toutes les fonctions de la std (librairie standard du C++) il faut dire au compilateur :

1
using namespace std;

Ce qui nous donne le programme suivant :

1
2
3
4
5
6
7
8
9
#include <iostream>

using namespace std;

int main(int argc, char** argv){
	cout << "Hello world" << endl;
	
	return 0;
}

Compilons :

g++ -Wall main.cpp -o test

Nous obtenons :

./test
Hello world

C'est à dire la même chose qu'avant, sauf qu'on s'est moins fatigué. Mais attention :

Il ne faut jamais mettre un using namespace dans un .h !!!

Et oui, souvenez-vous, le .h va être inclue, est si vous mettez un using namespace dedans, il va se propager, ce qui peut amener des ambiguïtés, et un ordinateur déteste les ambiguïtés. Comme par exemple :

Avec les namespaces :

1
2
toto::coucou();
titi::coucou();

Sans les namespaces :

1
2
3
4
5
using namespace toto;
using namespace titi;

coucou();
coucou();

Et quel coucou appartient à quel namespace, on ne sait pas, et le compilateur non plus.

Bon, pour le moment vous n'aller avoir qu'un seul namespace : std, mais n'en mettez pas dans un .h. Car un .h est amené à être inclue, et il ne faut pas inclure de using namespace pour la raison évoquée précédemment.