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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include <iostream>
#include <stdlib.h>
class Class {
/* attributes */
public:
int attr1;
int attr2;
mutable int attr3_mutable;
/* methods */
public :
Class() : attr1(0), attr2(0), attr3_mutable(0)
{
}
~Class() {}
// Cette méthode ne peut pas changer l'état du pointeur this
void updateAttributes(int a1, int a2) const
{
std::cout << "methode " << __func__ << " const" << std::endl;
// décommentes ceci pour voir
/*attr1 = a1;
attr2 = a2;*/
// un attribut mutable peut être cependant modifié
attr3_mutable = 1;
}
void updateAttributes(int a1, int a2)
{
std::cout << "methode " << __func__ << std::endl;
attr1 = a1;
attr2 = a2;
attr3_mutable = 1;
}
};
int main()
{
std::cout << "On a deux objets : l'un declare const et l'autre non" << std::endl;
std::cout << "Remarques que le methode appelee n'est pas toujours la meme" << std::endl;
std::cout << "-----------------------------------------------------------\n" << std::endl;
Class c1_notConst;
c1_notConst.updateAttributes(0, 0);
const Class c2_const;
c2_const.updateAttributes(0, 0);
return 0;
} |