2010-10-17 5 views
10

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

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

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

ответ

23

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

1

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

Смежные вопросы