![]()
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