статические изменяемые переменные-члены в C ++? - PullRequest
10 голосов
/ 17 октября 2010

почему или по какой причине невозможно объявить переменную члена класса в C ++ как static mutable?Что-то вроде

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

Для меня нет никаких оснований запрещать такие декларации.Например, по таким причинам, как ведение глобальной статистики всего класса, может быть удобно иметь статическую переменную, которую можно изменять (логически) методами const.Так что это либо неправильное проектирование в C ++, и оно излишне сложное, либо есть практическая или теоретическая причина, которую я не вижу.

Ответы [ 2 ]

25 голосов
/ 17 октября 2010

Неконстантные статические члены класса могут уже быть модифицированы любыми (константными и неконстантными) методами класса. Нет необходимости и нет смысла объявлять это с mutable. Это абсолютно ничего не достигнет.

1 голос
/ 17 октября 2010

Ключевое слово mutable позволяет "const" и, следовательно, нестатической функции-члену изменять нестатические переменные-члены, помеченные как таковые (например, изменяемые).Статические функции не могут быть константными, а константные функции-члены могут изменять неконстантные статические члены.Я знаю, что это несколько сбивает с толку, но из-за этого нет необходимости разрешать переменную статическую переменную-член.

...