• [^] # Re: 'mutable' ?

    Posté par (site web personnel) . En réponse au message Appeler une méthode non-const à partir de la méthode const homonyme. Évalué à 1.

    Je ne suis pas certain que j'ai compris "mutable" de la même manière.

    Je pense qu'on a compris mutable de la même manière. C'est la vision qu'on a de ta classe qui diffère :)

    Pour moi, la classe A est surtout un conteneur de double (stocké dans data).
    sum_i et is_initialized sont des variables internes :

    • sum_i qui stocke un calcul intermédiaire - potentiellement lourd, donc tu veux déférer le calcul que lorsque c'est nécessaire et stocké le résultat.
    • is_initialized qui n'est qu'un flag pour savoir si le calcul intermédiaire a été fait.

    Pour le comportement différent const/non const, je rejoint fearan : le comportement devrait être identique.

    Dans le contexte que je viens de décrire, il est tout a fait valable de mettre ces variables internes en mutable : Le "contrat" de ta classe (et de ta méthode const) n'est pas cassé, il ne modifie pas les "vrais" donnés (data).

    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 [...]

    Tout à fait. Tu remarqueras que j'ai pris mes précautions et que je parle bien du code que tu as fourni, pas du problème réel.


    Je compléterai aussi la réponse de fearan en mettant le test CACHE_MEAN & cached_values directement dans _mean() et en appelant tout le temps cette dernière.

    Matthieu Gautier|irc:starmad