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 32 33 34 35 36
| class MaClass
{
public:
/* le constructeur */
MaClass(int i):ptr(new int[i]), count(i)
{
}
/* le constructeur par copie, qui s'assure que deux instance
* ne partagent pas un même espace mémoire
*/
MaClass(MaClass const & rhs):ptr(new int[rhs.i]),count(rhs.i){}
/* l'opérateur d'affectation */
MaClass & operator = (MaClass c) /*comme c est passé par valeur,
* c sera une copie (qui n'existera
* que durant l'exécution de la
* fonction) de l'objet passé en
* paramètre
*/
{
/* on interverti le pointeur de c et le pointeur de l'objet
* courent nous aurions pu envisager d'autres solutions
* pour ce faire :D
*/
std::swap(ptr, c.ptr);
/* Pour les autres membres, il n'y a pas de problèmes: une
* assignation toute simple sera suffisante :D
*/
count=c.count;
/* nous renvoyons l'objet courent */
return *this;
}/* c est détruit ici, et son destructeur appelé automatiquement :D */
~MaClass(){delete[] ptr;}
private:
int *ptr;
int count;
}; |