1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class vecteur{
public:
/* le constructeur par défaut */
vecteur():size{0}, ptr{nullptr}{
}
/* le constructeur de copie */
vecteur(vecteur const & orig):size{orig.size}{
if(size!=0){
ptr = new int[size];
for(int i = 0;i<size;++i)
ptr[i]=orig.ptr[i];
}else{
ptr = nullptr;
}
}
/* l'opérateur d'affectation */
vecteur & operator = (vecteur const & orig){
/* on crée une copie de l'original */
vecteur cpy{orig};
/* on inverse les donnée de l'instance courante avec celles de la copie */
swap(cpy);
} // la copie est détruite, son destructeur est appelé,
// la mémoire qui était avant allouée à l'élément courant est maintenant correctement libérée
private:
void swap(vecteur & v){
std::swap(v.size, size);
std::swap(v.ptr, ptr);
}
int size;
int * ptr;
}; |