Академический Документы
Профессиональный Документы
Культура Документы
Thmes abords
Prsentation du langage C++
Principales diffrences par rapport au C.
Orientation objet
Notion de classe et dobjet Encapsulation, public, priv. Hritage, accs protg. Polymorphisme.
Elments avancs
Programmation gnrique. Traitement derreurs par exception. Surcharge doprateurs.
Le langage C++
Introduction Historique
Bjarne Stroustrup cre en 1979 C With Classes Renomm C++ en 1983 C++: incrmentation, le langage aprs C Normalis par ISO
Le langage C++
Crer un programme C++ avec Visual Studio
Le langage C++
Les entres sorties standard du C++ #include <iostream> int main() { double x, y;
Bibliothque dentres sorties du C++
Flux de sortie
std::cout << "X:"; Flux dentre. std::cin >> x; std::cout << "Y:"; Oprateur surcharg en C++. Lecture depuis un flux. std::cin >> y; std::cout << "x * y = " << x * y << std::endl; return 0; }
Introduction la programmation oriente objet avec C++
Le langage C++
Les espaces de nom - utilisation
Espace de nom
Prfixe tous les identificateurs de lespace avec un nom. Exemple dans lespace std : std::cout
Simplification dcriture
Il est possible dimporter un espace de nom. Permet dutiliser les identificateurs de cet espace sans prfixe.
Syntaxe
using namespace std;
Introduction la programmation oriente objet avec C++ 5
Le langage C++
Les espaces de nom utilisation - exemple
#include <iostream> #include <conio.h> // Importation de l'espace de nom : using namespace std; int main() { double x, y; // Le prfixe n'est plus requis : cout << "X:"; cin >> x; cout << "Y:"; // Il est toujours possible d'utilier le prfixe : std::cin >> y; cout << "x * y = " << x * y << endl; // Les fonctions de la bibliothque C sont toujours utilisables _getch(); return 0; }
Introduction la programmation oriente objet avec C++ 6
Le langage C++
Les espaces de nom - dfinition
Il est possible de dfinir un espace de nom. Les identificateurs de cet espace sont alors prfixs. Syntaxe
namespace nom { // Placer ici les dclarations faisant partie de // l'espace de nom }
Le langage C++
Les espaces de nom dfinition - exemple
namespace heig_vd { void afficher_adresse() { cout << "HEIG-VD" << endl; cout << "Route de Cheseaux 1" << endl << "1401 Yverdon les bains" << endl; } void afficher_coordonnees_completes() { // Prfixe non requis, car dans le mme espace de nom : afficher_adresse(); cout << "Tel : 024 55 76 330 \n"; } } int main() { heig_vd::afficher_coordonnees_completes(); return 0; }
Introduction la programmation oriente objet avec C++ 8
Le langage C++
Les types supplmentaires du C++ - bool
C++ introduit un type pour les conditions logiques Son utilisation est recommande, mais pas obligatoire.
bool valide; valide = true; valide = false; if (valide) . . .
Le langage C++
Les types supplmentaires du C++ - string
Chanes de caractres
Pas de type dfini au niveau du langage C++ (idem C). Implment sous la forme dune classe dans la bibliothque standard <string>
A ne pas confondre avec string.h
Manipulation beaucoup plus commode quavec les tableaux de caractres. #include <iostream> #include <string> using namespace std; int main() { string nom; cout << "Votre nom : "; // cin >> nom; : ne saisit que le 1er mot. Utiliser getline getline(cin, nom); cout << "Bonjour " << nom << endl; char c; cin >> c; }
Exemple
10
Le langage C++
Les types supplmentaires du C++ - string quelques oprations
#include <iostream> #include <string> using namespace std; int main() { string chaine1, chaine2; chaine1 = "Le loup et l'agneau"; // longueur de la chaine: cout << chaine1.length() << endl; // le caractre en position 5: cout << chaine1.at(5) << endl; // sous-chaine de 4 caractres partir de la position 3 chaine2 = chaine1.substr(3, 4); cout << chaine2 << endl; char c; cin >> c; }
Introduction la programmation oriente objet avec C++ 11
Le langage C++
Contrles la compilation renforcs
12
Le langage C++
Exemple - compilation en C dun programme incorrect
La compilation a russi !
Introduction la programmation oriente objet avec C++ 13
Le langage C++
Exemple - compilation en C++ dun programme incorrect
14
Le langage C++
Surcharge de fonctions
Exemple
int minimum(int a, int b) { return a < b ? a : b; } int minimum(int a, int b, int c) { return minimum(a, minimum(b, c)); }
Introduction la programmation oriente objet avec C++ 15
Le langage C++
Encodage de la signature des fonctions
A lissue de la compilation
Le code objet contient plusieurs fonctions minimum. Comment le lieur peut il retrouver la bonne ?
16
Le langage C++
Encodage de la signature des fonctions
17
Le langage C++
Mlanger des fichiers sources C et C++
Le langage C++
Mlanger des fichiers sources C et C++
Main.cpp #include "lib.h" int main() { int a; a = minimum(1, 2); return 0; } Lib.c #include "lib.h" int minimum(int a, int b) { return a < b ? a : b; }
Lib.obj _minimum
Liaison impossible
Introduction la programmation oriente objet avec C++ 19
10
Le langage C++
Mlanger des fichiers sources C et C++ Solution
Il faut indiquer au compilateur C++ quelles fonctions utilisent les conventions de compilation du C plutt que C++. Syntaxe
extern "C" { // dclarations inteprter comme du C }
Exemple
Main.cpp extern "C" { #include "lib.h" } int main() { int a; a = minimum(1, 2); return 0; }
20
Le langage C++
Valeurs par dfaut des paramtres de fonctions
21
11
Le langage C++
Valeurs par dfaut des paramtres de fonctions
#include <iostream> using namespace std; void afficher_valeur(double valeur, const char * unite = "") { cout << valeur << " " << unite << endl; } int main() { afficher_valeur(12.5, "m"); afficher_valeur(12.5); return 0; }
Introduction la programmation oriente objet avec C++ 22
Le langage C++
Les types rfrence - Introduction
Dfinition
Un type rfrence est en fait un pointeur. Utilisable sans la syntaxe fastidieuse des pointeurs du C.
Particularits
Une variable de type rfrence DOIT tre initialise. Linitialisation indique quelle variable est rfrence. Il nest ensuite plus possible de modifier la rfrence.
Syntaxe
type & nom_reference = variable_referencee;
23
12
Le langage C++
Les types rfrence - Introduction
Exemple
double x = 0.0, y = 1.0; // dclaration et initialisation de la rfrrence : double & rx = x; // affectation de la variable rfrence rx = y; cout << "x :" << x << endl;
Comportement
A linitialisation, la rfrence reoit ladresse dune variable. Lors de toutes les affectations ultrieures, cest la variable rfrence qui est modifie. La rfrence dsigne donc toujours la mme variable pendant toute sa dure de vie.
Introduction la programmation oriente objet avec C++ 24
Le langage C++
Passage de paramtres par rfrence
Une rfrence est en fait un pointeur Permet donc de raliser le passage de paramtre par adresse. Sans la syntaxe lourde des pointeurs. Avec les rfrences, C++, offre une solution lgante pour le passage de paramtres par variable.
25
13
Le langage C++
Passage de paramtres par rfrence
void echanger(int & a, int & b) { int temporaire; temporaire = a; a = b; b = temporaire; } int main() { int i, j; i = 1; j = 2; cout << "i: " << i << " ; j: " << j << endl; echanger(i, j); cout << "i: " << i << " ; j: " << j << endl; }
26
Le langage C++
Rsultat de fonction de type rfrence
Une fonction peut retourner une rfrence (donc une adresse)
On peut affecter la variable rfrence retourne. On peut ainsi placer un appel de fonction gauche dune affectation !
Exemple
double tableau[100]; double & element(int i) { return tableau[i]; } int main() { element(5) = 123; cout << element(5) << endl; cin >> element(10); cout << element(10) << endl; }
27
14
Le langage C++
Gestion de fichiers au format texte - criture
#include <fstream> using namespace std; int main() { // dclaration d'un objet flux pour le fichier ofstream fichier; int i; // ouverture du fichier fichier.open("carres.txt"); // criture dans le fichier fichier << "Les carres de 1 a 100" << endl; for (i = 1 ; i <= 100; i++) fichier << i << "^2 : " << i * i << endl; // fermeture du fichier fichier.close(); }
28
Le langage C++
Gestion de fichiers au format texte - criture
#include <fstream> using namespace std; int main() { // dclaration d'un objet flux pour le fichier ofstream fichier; int i; // ouverture du fichier fichier.open("carres.txt"); // criture dans le fichier fichier << "Les carres de 1 a 100" << endl; for (i = 1 ; i <= 100; i++) fichier << i << "^2 : " << i * i << endl; // fermeture du fichier fichier.close(); }
29
15
Le langage C++
Gestion de fichiers au format texte - lecture
#include <iostream> #include <fstream> #include <string> using namespace std; int main() { // dclaration d'un objet flux pour le fichier ifstream fichier; string ligne; int nombre_ligne = 0; // ouverture du fichier fichier.open("carres.txt"); while (!fichier.eof()) { // lecture du fichier, vrification du succs if (getline(fichier, ligne)) nombre_ligne ++; } // fermeture du fichier fichier.close(); cout << "Le fichier comporte " << nombre_ligne << " lignes." << endl; }
Introduction la programmation oriente objet avec C++ 30
Le langage C++
Gestion de fichiers open
Prototype
void open(const char *_Filename, ios_base::openmode _Mode;
Openmode
app : append, va la fin avant chaque ajout. ate : ouvre le fichier et va la fin 1 fois. binary, : ouvre le fichier en mode binaire. in : ouvre en lecture out : ouvre en criture trunc : crase le fichier louverture.
Exemple
fstream fichier; fichier.open ("test.bin", ios::out | ios::app | ios::binary);
Introduction la programmation oriente objet avec C++ 31
16
Le langage C++
La gestion des erreurs exceptionnelles
int ListeDouble::Ajouter(double x) { int indice; if (nombre_elements < CAPACITE) { indice = nombre_elements; tableau[indice] = x; nombre_elements++; } else indice = INDICE_INVALIDE; return indice; } int Filtre::Echantilloner(double amplitude) { if (liste.Ajouter(amplitude) != INDICE_INVALIDE) return 1; else { printf("Erreur"); return 0; } }
double FiltreMedian(double valeurs[], int nombre) { int i; Filtre f; for (i = 0; i < nombre_valeurs; i++) if (!f.Echantilloner(valeurs[i])) return AMPLITUDE_INVALIDE; return f.CalculerValeurMediane(); }
Introduction la programmation oriente objet avec C++
Le code produit pour grer les erreurs exceptionnelles reprsente 50 % Beaucoup deffort pour propager lerreur liste pleine vers les fonctions de niveau suprieur.
32
Le langage C++
Les exceptions
Le traitement en cours est interrompu. Lexception se propage travers les fonctions appelantes.
Sans avoir aucun code crire pour cela.
17
Le langage C++
Les exceptions - Syntaxe
Lever une exception
throw exception("Liste pleine"); throw 1.5; // pas trs usuel
Le langage C++
La gestion des erreurs avec les exceptions
int ListeDouble::Ajouter(double x) { int indice; if (nombre_elements < CAPACITE) { indice = nombre_elements; tableau[indice] = x; nombre_elements++; } else throw exception("Liste pleine"); return indice; } void Filtre::Echantilloner(double amplitude) { liste.Ajouter(amplitude); }
Plus aucun code crire pour la propagation des erreurs ! Programmation beaucoup plus efficace.
double FiltreMedian(double valeurs[], int nombre) { int i; Filtre f; for (i = 0; i < nombre_valeurs; i++) f.Echantilloner(valeurs[i]); return f.CalculerValeurMediane(); }
35
18
Le langage C++
La gestion des erreurs avec les exceptions
Traitement de lexception
Se fait seulement au niveau o lon sait comment ragir. Exemple : dans main, afficher simplement un message derreur.
Exemple simple
double acquisitions[100]; double valeur_filtree; . . . try { valeur_filtree = filtre_median(acquisitions, 100); } catch (exception & e) { cout << "Erreur durant le filtrage : " << e.what() << endl; }
36
Le langage C++
La gestion des erreurs avec les exceptions
Recommandation
Utiliser la gestion par exception seulement pour les situations exceptionnelles. Prfrer des tests avec if pour les situations probables.
37
19
Le langage C++
Allocation dynamique de mmoire
Syntaxe
TYPE * variable; variable = new TYPE;
38
Le langage C++
Allocation dynamique de mmoire
Syntaxe
TYPE * variable; variable = new TYPE; . . . delete variable;
39
20
Le langage C++
Allocation dynamique de mmoire les tableaux
Le langage C++
Allocation dynamique de mmoire les tableaux - exemple
int main() { double * tableau; int i, taille; cout << "Taille:"; cin >> taille; // Allocation dynamique du tableau tableau = new double[taille]; for (i = 0; i < taille; i++) { cout << "Element " << i + 1 << " : "; cin >> tableau[i]; } // Libration du tableau delete []tableau; _getch(); return 0; }
41
21
42
COMPLEXE complexe_oppose(COMPLEXE z); COMPLEXE complexe_conjugue(COMPLEXE z); COMPLEXE complexe_somme(COMPLEXE z1, COMPLEXE z2);
43
22
44
45
23
Syntaxe fastidieuse
Noms de mthodes prfixs par complexe
pour rappeler le TDA dappartenance
24
On utilise le point pour accder aux mthodes (comme pour les champs)
49
25
En langage C
void complexe_definir_cartesien(COMPLEXE* z, double re, double im) { z->reel = re; Ladresse de la structure est z->imaginaire = im; videmment requise pour } accder aux champs.
En langage C++
void Complexe::DefinirCartesien(double re, double im) { reelle = re; Ladresse de la structure nest imaginaire = im; pas passe, et pourtant a } fonctionne !?
50
Code crit :
void Complexe::DefinirCartesien(double re, double im) { reelle = re; imaginaire = im; }
51
26
Rappel TDA
TDA : Type de Donnes Abstrait. On ne devrait jamais accder directement aux champs de la structure. Mais rien ne nous empche de le faire !
52
Exemple :
struct Complexe { private: double reelle, imaginaire;
public: void DefinirCartesien(double re, double im); void DefinirPolaire(double module, double argument); double LireReelle(); double LireImaginaire(); . . . };
Le type complexe peut seulement tre utilis avec les mthodes publiques prvues. Garantit le respect de labstraction
53
27
Points communs
class et struct permettent tous deux de dclarer des classes. Le code gnr est 100 % identique.
Diffrences
Avec la dclaration struct
Par dfaut, tous les membres sont publics.
Lequel prfrer ?
En programmation oriente objet, on utilise habituellement class. Par dfaut, tout ce qui nest pas explicitement rendu public par le programmeur est ainsi priv.
Introduction la programmation oriente objet avec C++ 55
28
Dfinition
Un objet est une instance dune classe. Cest--dire une variable de ce type.
Exemples
Complexe z1, z2; Complexe * z3; z3 = new Complexe; z1 et z2 sont des objets. z3 est un pointeur sur un objet (son adresse).
56
Le fichier .h
Contient habituellement les dclarations de classes, mthodes,
Le fichier .cpp
Contient limplmentation des mthodes.
57
29
Exemple :
ostream & operator<<(ostream & stream, const Complexe & z) { stream << z.LireReelle(); if (z.LireImaginaire() < 0.0) stream << " - " << - z.LireImaginaire() << " . i"; else if (z.LireImaginaire() > 0.0) stream << " + " << z.LireImaginaire() << " . i"; return stream; }
58
Problme
z est un paramtre const. A-t-on le droit dappeler une mthode sur un const ? Et si la mthode modifiait la constante ? Compilateur: refus des appels de mthodes normales sur des objets const
class Complexe { . . . . double LireReelle() const; double LireImaginaire() const; double LireModule() const; double LireArgument() const; . . . . };
Introduction la programmation oriente objet avec C++ 59
30
60
Implmentation
Complexe Complexe::operator+(const Complexe & operande) { Complexe resultat; resultat.reelle = reelle + operande.reelle; resultat.imaginaire = imaginaire + operande.imaginaire; return resultat; }
Introduction la programmation oriente objet avec C++ 61
31
62
Usage gnral
Le code source est crit en langue anglaise
Terminologie
On parle de getter et de setter
63
32
Apport du C++
Notion de constructeur
Mthode dinitialisation dun objet. Appele automatiquement la cration de lobjet.
Notion de destructeur
Mthode de finalisation dun objet. Appele automatiquement la destruction de lobjet.
64
65
33
Dfinition
Complexe::Complexe() { reelle = 0.0; imaginaire = 0.0; }
Introduction la programmation oriente objet avec C++ 66
67
34
Dclaration
class Complexe { public: Complexe(); Complexe(double re, double im); . . . };
Dfinition
Complexe::Complexe(double re, double im) { DefinirCartesien(re, im); }
Introduction la programmation oriente objet avec C++ 68
69
35
70
Utilisation
int main() { SimulationImpedance s1, s2; }
71
36
Libration de la mmoire
La mmoire alloue dynamiquement doit tre libre. Solution en C++ : le destructeur
Mthode appele automatiquement lorsque lobjet disparait.
73
37
Dclaration
class ListeDouble { public: ListeDouble(); ~ListeDouble(); . . . };
Destructeur: - Nom de la classe, prcd de ~ - Sans aucun type de rsultat.
Dfinition
ListeDouble::~ListeDouble() { delete []tableau; }
Introduction la programmation oriente objet avec C++ 74
38
Utilisation
int main() { ListeDouble liste1, liste2; liste1.Ajouter(3.0); liste2 = liste1; }
Constat
Objets trs facile utiliser. Construits et dtruits automatiquement.
Problme
// Que fait cette instruction ? liste2 = liste1;
1 Oprateur daffectation.
Appel lors de laffectation dun objet. Copie chaque champ.
77
39
78
79
40
Consquences
Une modification ultrieure de liste1 modifie aussi liste2 ! Lors de la destruction
La destruction de liste2 libre le bloc de mmoire de liste1. Lors de la destruction de liste1, ce bloc est libr une deuxime fois. Do une erreur fatale.
Comportement souhaitable
Lors de laffectation ou de linitialisation de liste2, il faudrait
Copier le contenu de liste1 dans le tableau de liste2. Copier le nombre dlments.
Dfinition
ListeDouble & ListeDouble::operator=(const ListeDouble & liste) { int i; // Copie des lments du tableau for (i = 0; i < liste.nombre_elements; i++) tableau[i] = liste[i]; // Copie du nombre dlments nombre_elements = liste.nombre_elements; // laffectation renvoie la valeur de gauche // Requis pour permettre le chanage des affectations. return *this; }
81
41
Dfinition
ListeDouble::ListeDouble(const ListeDouble & liste) { int i; // Constructeur : cration du tableau ncessaire tableau = new double[CAPACITE]; // Copie des lments utiliss for (i = 0; i < liste.nombre_elements; i++) tableau[i] = liste[i]; // Copie du nombre dlments nombre_elements = liste.nombre_elements; }
82
83
42
Observation
84
Intrt
Eviter les rptitions de code. Approche hirarchique des problmes.
85
43
86
class Condensateur: public ComposantPassif { private: double capacite; public: Complexe CalculerImpedance(double frequence) const; void DefinirCapacite(double valeur); double LireCapacite() const; };
87
44
89
45
Mthodes dfinies seulement dans ComposantPassif. Disponibles dans Condensateur par hritage public.
Rsultat :
Observation
Condensateur a bien hrit des attributs et mthodes de ComposantPassif Rsultat incomplet :
Pour un condensateur, il faudrait aussi afficher la capacit. Solution : redfinir la mthode AfficherCaracteristiques .
91
46
Dclaration
class Condensateur: public ComposantPassif { public: . . . void AfficherCaracteristiques() const; };
Dfinition
void Condensateur::AfficherCaracteristiques() const { ComposantPassif::AfficherCaracteristiques(); cout << "Capacite : " << capacite * 1.0e6 << " uF" << endl; }
Rsultat
92
93
47
94
95
48
Problme
void AfficherImpedance(const ComposantPassif & composant) { double frequence = 1.0; Complexe impedance; composant.AfficherCaracteristiques(); while (frequence <= 1.0e6) { impedance = composant.CalculerImpedance(frequence); cout << frequence << " Hz : " << impedance << endl; frequence = frequence * 10; } }
49
On choisit de retourner 0, car on ne sait pas comment calculer dans la classe ComposantPassif.
Introduction la programmation oriente objet avec C++ 98
50
CalculerImpedance
Cest la mthode de base de ComposantPassif qui est appele. Elle retourne toujours 0.
Comportement souhaitable
En fonction de la classe du composant pass en paramtre. Appeler la fonction AfficherCaracteristiques de cette classe. Appeler la fonction CalculerImpedance de cette classe.
100
Syntaxe
Pour quune mthode soit virtuelle, il suffit de faire prcder sa dclaration par le mot rserv virtual . En C++, cette dclaration est requise seulement la premire apparition de la mthode (dans la classe de base).
Introduction la programmation oriente objet avec C++ 101
51
102
52
La mthode effectivement appele derrire cet appel dpend du type effectif de lobjet. La fonction AfficherImpedance sadapte au type des objets manipuls. Cette fonction peut tre utilise avec diffrents types, elle est dite polymorphe. Le mcanisme utilis sappelle polymorphisme.
104
class A { public: long _l; void Test() { } }; class B { public: long _l; virtual void Test() { } }; int main() { cout << "A:" << sizeof(A) << endl; cout << "B:" << sizeof(B) << endl; }
105
53
VMTInductance
VMTResistance
106
Cot
Performances : 1 indirection, donc peu dimpact Mmoire :
Tables VMT rptes pour chaque classe. Code plus volumineux Problmatique dans des environnements extrmement contraints.
107
54
108
Classe ComposantPassif
La dclaration de la mthode CalculerImpedance est requise pour permettre son appel sur les objets de ce type. Son implmentation retournant toujours 0 est inutile. Le seul intrt est de dclarer l interface commune de la classe Composant Passif et de ses sous-classes.
Exemple
virtual Complexe CalculerImpedance(double frequence) const =0;
Introduction la programmation oriente objet avec C++ 109
55
La fonction reoit ladresse du paramtre effectif. Permet daller consulter sa classe et dappeler la bonne mthode virtuelle.
La fonction reoit une copie du paramtre effectif. La copie est toujours de type ComposantPassif, pas du type effectif. Seules les mthodes de ComposantPassif seront appeles. Le mcanisme des mthodes virtuelles ne fonctionne pas !
110
Rappel
public
Mthodes et attributs utilisables depuis lextrieur de la classe.
private
Mthodes et attributs utilisables depuis lintrieur de la classe.
111
56
Inductance
Condensateur
Inductance
Condensateur
112
113
57
Composant passif
Rsistance
Inductance
Condensateur
114
EtreV iv ant
Ani mal
Vertbrs
Inv er tbr
Mamifres
Hum ain
115
58
Le langage C++
Concepts avancs la gnricit - introduction
Comment viter de rpter le code pour chaque type ? C++ supporte la gnricit
Possibilit dcrire des classes et fonctions. Dont limplmentation est paramtre par le type.
Exemple
List<double> List<int>
Introduction la programmation oriente objet avec C++ 116
Le langage C++
Concepts avancs la gnricit dclaration dune classe gnrique
template <class ElementType, int Size> class List { public: List(); ElementType & operator[](int index); int GetSize() const { return Size; } int GetCount() const; int Add(const ElementType & value); void Clear(); void RemoveAt(int index); void Insert(int index, const ElementType & value); private: ElementType _elements[Size]; int _count; };
Particularit
La dfinition des mthodes doit aussi tre visible lors de lutilisation de la classe gnrique En gnral, plac aussi dans le .h
Introduction la programmation oriente objet avec C++ 117
59
Le langage C++
Concepts avancs la gnricit implmentation
template <class ElementType, int Size> void List<ElementType, Size>::RemoveAt(int index) { if (index >= 0 && index < _count) { for (int i = index + 1 ; i < _count; i++) _elements[i - 1] = _elements[i]; _count = count - 1; } else throw Exception("Invalid index"); }
Remarques
Une classe gnrique est appele template ou patron . Cest un moule paramtr permettant de gnrer des classes. La gnricit peut aussi sappliquer aux fonctions.
118
Le langage C++
Concepts avancs la gnricit utilisation
List<double, 100> liste1; List<int, 100> liste2; liste1.Add(2.3); liste2.Add(10);
119
60
Le langage C++
Concepts avancs la stl
Inconvnients
Utilisation peu intuitive au dbut. Pas facile tendre. Utilise lallocation dynamique de mmoire. Difficilement utilisable dans les environnements temps rel.
120
Le langage C++
Concepts avancs la stl - exemple
#include <iostream> #include <vector> using namespace std; int main() { vector<double> v; v.push_back(1.1); v.push_back(2.2); v.push_back(3.3); cout << "Taille: " << v.size() << endl; cout << "Element[1]:" << v[1] << endl; cout << "Boucle sur les elements:" << endl; int i; for(i=0; i < v.size(); i++) cout << v[i] << endl; cout << endl << "Iterateur:" << endl; vector<double>::const_iterator it; for(it = v.begin() ; it != v.end() ; it++) cout << *it << endl; }
Introduction la programmation oriente objet avec C++ 121
61
Le langage C++
Concepts avancs la stl aperu du contenu
122
Le langage C++
Bibliothque standard
Largement documente
123
62
Quavons-nous appris ?
Les bases du C++
La compilation plus stricte. Les entres sorties. Les espaces de nom. Les types rfrences. Les nouveaux types de donnes. Lallocation dynamique. Les exceptions Notions de classe, dobjet, de mthode. Surcharge doprateurs. Constructeurs, destructeurs. Mthodes virtuelles et polymorphisme. Concepts avancs: la gnricit, la stl.
124
Lorientation objet
Vos questions
125
63
126
64