1 #ifndef __TABLEAU__ 2 #define __TABLEAU__ 3 4 #include <iostream> 5 using namespace std; 6 7 class Tableau { 8 public: 9 10 // Le constructeur principal - on passe la dimension du tableau en parametre 11 explicit Tableau(size_t n); 12 13 // Le trio infernal 14 Tableau (const Tableau & t); 15 Tableau & operator=(const Tableau &t); 16 ~Tableau(); 17 18 // renvoie la taille du Tableau 19 size_t size() const { return sz;}; 20 21 // renvoie un element du Tableau sans deborder 22 float & operator[](size_t i); 23 24 // meme chose - version const 25 float operator[](size_t i) const; 26 27 // operateurs += 28 // Le parametre est un autre Tableau 29 Tableau & operator+=(const Tableau & t); 30 31 // Le parametre est un float 32 Tableau & operator+=(float x); 33 34 // Operateur d'impression, on le déclare souvent comme ami 35 // Ici ce n'est pas la peine, car on utiliser l'opérateur[] 36 // friend ostream & operator<<(ostream&, const Tableau&); 37 38 private: 39 const size_t sz; 40 float *A; 41 42 // Le signe __ rappelle qu'il s'agit de methodes privees 43 void __copie (float src, float dest[], size_t s); 44 void __copie (float src[], float dest[], size_t s); 45 }; 46 47 // Une fonction qui n'est pas une methode 48 // Le prototype ci-dessous fonctionne, mais entraine l'appel de 2 constructuers + 2 destructeurs inutiles ! 49 // Tableau operator+(Tableau t1, Tableau t2); 50 Tableau operator+(const Tableau& t1, const Tableau& t2); 51 52 // Operateur d'impression, déclaré ici 53 ostream & operator<<(ostream&, const Tableau&); 54 55 #endif