Sur un objet déclaré const on ne peut appeler que des méthodes const (sauf pour le constructeur)
Pour modifier un attribut dans une méthode const il doit être défini mutable
class A{
mutable int n = 0; //compter le nombre d'accès à l'objet
int attr;
public:
A (int c) : attr{c; //ok à la construction}{}
int get(){return attr};
void set(int a){attr=a;}
int get2()const{
//this->attr++ //erreur la méthode est const
this->n++; // ok n est mutable
return this->attr;
}
};
int main(){
A obj{3};
int a = obj.get(); //ok
obj.set(6*2); //ok
A const objc{4}; //ok
//a = objc.get(); //erreur
//obj.set(6); //erreur
a = objc.get2(); //ok get2 est const
return 0;
}