Chapitre 15 : objet const

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;
}