Cette section complète le cours de syntaxe de base du C++. Sa lecture n’est pas requise pour réaliser le TP, mais les éléments abordés seront utilisés lors des TP ultérieurs.
auto
Ce mot-clé permet de faire de la déduction de type sous réserve que la déduction puisse être réalisée sans ambiguïté. La déduction de type ne fonctionne pas sur des méthodes virtuelles. La déduction de type est particulièrement intéressante sur des types longs, par exemple des types dépendants de l’espace de nom d’un autre type. En voici un exemple :
int a;
auto *p = &a; // déduit int *
auto v = 6; // déduit int
double f() {/*...*/ }
const auto r = f(); // déduit le retour de double
Les boucles sur ensembles sont un type de boucles for
avec une syntaxe particulière, permettant d’éviter l’usage explicite d’itérateurs ou l’usage d’indices. Par exemple, le code suivant va parcourir une séquence d’entiers dans un vecteur avec une boucle sur ensemble :
std::vector<int> v{1, 2, 3, 4};
for (const auto &e: v) {
std::cout << e << " ";
}
Cette syntaxe s’apparente au foreach
de certains langages. En C++, elle s’appuie sur les itérateurs (forward iterator
), ainsi que les méthodes begin()
et end()
qui définissent le début et la fin d’une séquence.
Les espaces de noms C++ permettent de définir des ensembles de types, classes, etc. Par exemple, l’espace de nom std
contient des éléments standards du langage, tels que :
Pour accéder à un membre d’un namespace, utilise l’opérateur "double deux points" ::
. Voici un exemple avec les opérateurs de flux pour afficher à l’écran :
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
Avec les espaces de noms vient un nouveau mot-clé : using
. Il permet deux choses :
using namespace
dans un .h
ou un .hpp
!typedef
en C