2010-10-17 40 views
10

pourquoi ou pour quelle raison n'est-il pas possible de déclarer une variable de membre de classe en C++ en tant que static mutable? Quelque chose commevariables de membre mutables statiques en C++?

static mutable int t; //This won't compile 

Pour moi, il n'y a aucune raison d'interdire de telles déclarations. Par exemple. Pour des raisons comme le maintien d'une statistique globale à l'échelle de la classe, il peut être pratique d'avoir une variable statique qui peut être modifiée par des méthodes const (logiquement). Donc soit c'est une sorte de mauvaise conception en C++ et inutilement compliqué, soit il y a une raison pratique ou théorique que je ne peux pas voir.

Répondre

23

Les membres statiques non-const de la classe déjà peuvent être modifiés par les méthodes (const et non-const) de la classe. Il n'est pas nécessaire et inutile de le déclarer avec mutable. Cela n'aboutirait absolument à rien.

1

Le mot-clé mutable permet à une fonction de membre "const" et donc non statique de modifier des variables de membre non statiques marquées comme telles (c'est-à-dire mutables). Les fonctions statiques ne peuvent pas être const et les fonctions membres const peuvent changer les membres statiques non-const. Je sais que c'est un peu confus, mais c'est pour cette raison qu'il n'est pas nécessaire d'autoriser une variable membre statique mutable.