Подтвердить что ты не робот

Статические изменяемые переменные-члены в С++?

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

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

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

4b9b3361

Ответ 1

Неконстантные статические члены класса уже могут быть изменены любыми (const и non-const) методами класса. Там нет необходимости и нет смысла объявлять его с помощью mutable. Это ничего не достигнет.

Ответ 2

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