• [^] # Re: 'mutable' ?

    Posté par . En réponse au message Appeler une méthode non-const à partir de la méthode const homonyme. Évalué à 2.

    Je ne suis pas certain que j'ai compris "mutable" de la même manière. Je n'aurais tendance à utiliser "mutable" uniquement dans des cas très spécifiques, par exemple pour pouvoir modifier un cache, ou quelque chose comme ça. Si les propriétés de l'objet sont modifiées (ici, elles le sont clairement, vu que l'objet passe de !is_initialized à is_initialized, et que le comportement de l'objet change (il appelle abort() ou il retourne un résultat quand appelé en contexte const), je trouve que l'utilisation de 'mutable' est abusif.

    Tu devrais aussi le mettre en const est le calculer dans le constructeur.

    Je ne sais pas, évidemment, dans le cas réel, il y a plus de trucs à calculer. Imagine que tu puisse demander aussi la variance ; si tu calcules tout dans le constructeur, tu vas devoir calculer sum_i et sum_i2, et si tu ne demandes finalement que la moyenne, tu auras calculé sum_i2 pour rien. J'avoue que c'est une question non triviale, mais ça me semble une pessimisation a priori que de faire des calculs potentiellement lourds alors qu'on n'est pas certain d'utiliser le résultat.