Cours c++ avancé
La norme:
Norme 98 (ISO)
September 2011 (C++ 11) C+ Obj+Modif
Divise par 5/6 le nombre d'instructions et par 2 le temps de codage.
Les Bases du C++:
Les Transformations entre C et C++:
Généralités:
Les Bibliothèques:
Les bibliothèques C sont toujours utilisables (stdio.h, stdlib.h, math.h ...), sauf que les noms ont changés : cstdio,cstdlib,cmath ... etc (NameSpaces).
Les Namespaces:
Exemple:
Bib1.h Bib2.h struct X{
...
} struct X{
...
}
Si on include les deux .h dans un fichier il y a une erreur de compilation, car les structures on le même nom.
Le namespace est un outil qui permet d'éviter les conflit de noms pour les types, fonctions et variables gloabales.
C'est un espace logique de noms, de types, de fonctions, et de variables globales, déstinés à éviter les problèmes de conflit de déclaration. Construction:
namespace NDNS{ int i=15; var f(); struct X{};
}
Le tout dans un .h, on peut déclarer plusieurs espaces de noms.
Utilisation:
NDNS::f
"::" ==> Opérateur de résolution de portée.
Remarque:
L'espace de nom STD contient toutes les déclarations des fonctions et variables du langage.
Il existe un mécanisme qui permet par défaut de ne pas préciser un espace de nom, il s'agit de l'instruction using namespace. Ex: using namespace NDNS;
Les constantes:
Mot clé: "const".
Exemples:
const int n=15; const char * ptr= ...; (deviens compliqué): Interdit la modification de la valeur sur laquelle pointe le pointeur: Interdit : *ptr =*ptr+1; char * const ptr=...; Interdit la modification de l'adresse du pointeur. Interdit: ptr=ptr+1; const int f(const char * p) const; le dernier const interdit de modifier l'objet avec lequel elle à été appelée.
Les Conversions:
Mot clé:cast
En C : (type)