Fonctions virtuelles
Surcharge de fonction virtuelle
Parmi les nouveautés signalons tout d'abord qu'une politique contraignante a été mise en œuvre vis-à-vis de l'espace global des identificateurs. Jusqu'à présent les bibliothèques standard du C et du C++ offraient des identificateurs (variables, fonctions) globaux qui, sans être des mots réservés du langage, ne devaient pas être utilisés à d'autres fins sous peine de graves conflits. Dorénavant, tous les identificateurs des bibliothèques standard appartiennent à l'espace des noms standard std et doivent être utilisés soit préfixés par std::, soit avec la clause using namespace std. Une autre nouveauté est la possibilité de traiter les caractères "longs" (universels) codés sur un mot (word) de 2 octets, et correspondant au type wchar_t. Toutes les entités (fichiers, classes, etc. ) se rapportant à ce type ont le même identificateur que celles se rapportant au type char, précédé d'un w : wctype au lieu de ctype, wistream au lieu de istream, etc.
Cette nouvelle norme inclut la bibliothèque générique standard (Standard Template Library ou STL) d'Alexandre Stepanov qui représente à elle seule près de la moitié de la norme. De nombreuses implémentations antérieures de C++ proposaient des bibliothèques de classes et de fonctions qui allaient très au-delà des fonctions standard du C (par exemple, Microsoft et sa bibliothèque Microsoft Fundation Class, Borland et la Borland Object Windows, UP, DEC, etc. La bibliothèque STL, quoique restrictive par rapport à certaines de ces bibliothèque "propriétaires", offre de très nombreux outils et permet de façon "officielle" une nouvelle façon de programmer : la programmation générique et un véritable développement de composants logiciels.
Catégorie | Contenu |
Support langage | Composants liés à certaines parties du langage comme l'allocation de la mémoire dynamique, le traitement des exceptions |
Diagnostics | Définition des exceptions standard levées par d'autres composants, fournissant un support pour le traitement uniforme des erreurs de la bibliothèque |
Utilitaires | Composants utilisés par la bibliothèque standard (y compris par la STL), mais aussi accessibles à l'utilisateur |
Chaînes | Représentation de base du texte |
Localisation | Facilités de formatage locales (pays) |
Conteneurs | Composants des conteneurs de la STL |
Itérateurs | Composants des itérateurs sur les conteneurs de la STL |
Algorithmes | Composants des algorithmes généraux et de manipulation des conteneurs de la STL |
Numériques | Algorithmes numériques généralisés, nombres complexes, support pour le traitement vectorisé |
E/S | Composants d'entrées/sorties - flux |
Nom du fichier d'entête C | Contenu |
assert.h | définit la macro de debogage assert |
ctype.h | Contient des informations utilisées par les macros de conversion et de classification de caractères (telles que isalpha, etc . ) |
errno.h | Définit les mnémoniques constantes pour les codes d'erreurs |
float.h | Contient des paramètres pour les routines en virgule flottante |
iso646.h | |
limits.h | Contient des paramètres d'environnement, des informations à propos des limitations de compilation, et les portées de valeurs entières |
locale.h | Déclare les fonctions qui fournissent des informations spécifiques au pays et au langage |
math.h | Déclare les prototypes des fonctions mathématiques et les programmes de traitement des erreurs mathématiques |
setjmp.h | Définit les fonctions 1ongjmp et setjmp et le type jmpbuf qu'elles utilisent |
signal.h | Définit les constantes et les déclarations nécessaires aux fonctions signal et raise |
stdarg.h | Définit les macros utilisées pour la lecture de la liste d'arguments dans des fonctions déclarées pour accepter un nombre variable d'arguments |
stddef.h | Définit plusieurs macros et types de données communs |
stdio.h | Déclare les fonctions standard d'entrées/sorties |
stdlib.h | Déclare plusieurs fonctions d'emploi fréquent : les fonctions de conversion, les fonctions de recherche et de tri, et diverses autres |
string.h | Déclare plusieurs fonctions de manipulation de mémoire et de chaînes |
time.h | Déclare plusieurs fonctions de manipulation du temps |
wchar.h
wctype.h |
|
C
C++
|
algorithm | ios | map | stack |
bitset | iosfwd | memory | stdexcept |
complex | iostream | new | streambuf |
deque | istream | numeric | string |
exception | iterator | ostream | typeinfo |
fstream | limits | queue | utility |
functional | list | set | valarray |
iomanip | locale | sstream | vector |
Classes génériques (types) | Classes prédéfinies | Itérateurs d'accès | Capacité |
basic-string | string | begin() | empty() |
wstring | end() | size() | |
rbegin() | length() | ||
rend() | max_size() | ||
capacity() | |||
resize() | |||
reserve() |
Accès élémentaire | Modifieurs | Opérations |
at() | construct() | find() |
operator[] | append() | rfind() |
c_str() | operator+=() | find_first_of() |
data() | assign() | find_last_of() |
insert() | find_first_not_of() | |
remove() | find_last_not_of() | |
replace() | compare() | |
copy() | getline() | |
swap() |
Une classe de base ios_base est offerte, ainsi qu'un certain nombre de classes génériques (tableau 6, colonne 1), qui sont instanciées par les types prédéfinis char et wchar_t pour donner les classes prédéfinies (appelées aussi types) de la colonne 2.
Ces classes sont elles-mêmes instanciées en 8 objets prédéfinis (colonne 3).
Classes génériques | Classes prédéfinies (types) | Objets |
basic_ios | ios
wios |
|
basic_streambuf | streambuf
wstreambuf |
|
basic_istream | istream
wistream |
cin
wcin |
basic_ostream | ostream
wostream |
cout, cerr, clog
wcout, wcerr, wclog |
basic_stringbuf | stringbuf
wstringbuf |
|
basic_istringstream | istringstream
wistringstream |
|
basic_ostringstream | ostringstream
wostringstream |
|
basic_filebuf | filebuf
wfilebuf |
|
basic_ifstream | ifstream
wifstream |
|
basic_ofstream | ofstream
wofstream |
|
traits |
class CMere
{ // ... public : virtual void Editer (void); // ... }; // CMere class CFille : public CMere
}; // CFille |
class CMere
{ // ... public : virtual CMere * Fonction (...); // ... }; // CMere class CFille : public CMere
}; // CFille |
[1] Pour plus de détails sur le contenu de ces fichiers, consulter Standard C de Plauger et Brodie.
© D. Mathieu
mathieu@romarin.univ-aix.fr
I.U.T.d'Aix en Provence - Département Informatique