Когда я пытаюсь создать изменяемую локальную переменную в C ++, я получаю:
изменяемая ошибка не допускается
во время компиляции с Visual Studio.
в C ++ есть какая-то изменчивая локальная переменная?
Есть ли лучший способ, чем const_cost для определения «неконстантной» локальной переменной, которая получила свое значение от функции, которая возвращает константное значение?
Спасибо
изменяемый определяет, что
член класса не влияет на внешне видимое состояние
класс.
Это поможет вам сохранить правильность.
Локальная переменная не представляет состояние класса (она имеет локальную область видимости), поэтому изменчивость не имеет смысла в этом контексте.
Локальные переменные являются изменяемый, если вы явно не объявите их как const
, Таким образом, нет необходимости в изменяемом спецификаторе для локальных переменных. Это верно для автономных функций и функций-членов класса, включая const
функции-члены.
В const
функция-член, «вещь», которая const
является экземпляром класса, который оперируется ( this
). Локальные переменные не являются самими собой const
если вы не объявите их как таковые.
Единственное исключение — лямбды. Перехваченные лямбда-переменные являются «const по умолчанию», потому что они являются членами перехвата, а сгенерированные операторы вызова функций const
, Вы должны объявить лямбду как изменчивую, чтобы иметь возможность изменять ее состояние. (Обычные локальные переменные внутри лямбда-тела изменчивы, как и другие обычные локальные переменные.)
mutable
может применяться только к элементам данных. Это означает, что допустимо присваивать элементу данных из const
функция-член. Ключевое слово не имеет значения по отношению к локальным переменным и не может быть применено к ним.