const — изменяемая локальная переменная в переполнении стека

Когда я пытаюсь создать изменяемую локальную переменную в C ++, я получаю:

изменяемая ошибка не допускается

во время компиляции с Visual Studio.

в C ++ есть какая-то изменчивая локальная переменная?

Есть ли лучший способ, чем const_cost для определения «неконстантной» локальной переменной, которая получила свое значение от функции, которая возвращает константное значение?

Спасибо

-2

Решение

изменяемый определяет, что

член класса не влияет на внешне видимое состояние
класс.

Это поможет вам сохранить правильность.

Локальная переменная не представляет состояние класса (она имеет локальную область видимости), поэтому изменчивость не имеет смысла в этом контексте.

3

Другие решения

Локальные переменные являются изменяемый, если вы явно не объявите их как const, Таким образом, нет необходимости в изменяемом спецификаторе для локальных переменных. Это верно для автономных функций и функций-членов класса, включая const функции-члены.

В const функция-член, «вещь», которая const является экземпляром класса, который оперируется ( this). Локальные переменные не являются самими собой const если вы не объявите их как таковые.

Единственное исключение — лямбды. Перехваченные лямбда-переменные являются «const по умолчанию», потому что они являются членами перехвата, а сгенерированные операторы вызова функций const, Вы должны объявить лямбду как изменчивую, чтобы иметь возможность изменять ее состояние. (Обычные локальные переменные внутри лямбда-тела изменчивы, как и другие обычные локальные переменные.)

3

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

0
По вопросам рекламы [email protected]