c++中的可变局部变量

Mutable local variable in C++

本文关键字:局部变量 c++      更新时间:2023-10-16

当我尝试在c++中创建一个可变的局部变量时,我得到:

不允许错误可变

在Visual Studio中编译。

c++有某种可变的局部变量吗?

有一个更好的方法,然后const_cost定义一个"非const"的局部变量,接收他的值从函数返回一个const值?

谢谢

mutable定义

类的成员

不影响对象的外部可见状态类。

帮助你维护const的正确性。

局部变量不代表类状态(它有局部作用域),所以在这种上下文中可变是没有意义的。

局部变量可变的,除非您显式地将它们声明为const。因此,不需要在局部变量上使用可变说明符。对于独立函数和类成员函数(包括const成员函数)都是如此。

const成员函数中,const中的"事物"是正在被操作的类(this)的实例。局部变量本身不是const,除非你这样声明它们。

唯一的例外是lambdas。Lambda捕获的变量"默认为const",因为它们是捕获的成员,生成的函数调用操作符是const。您需要将lambda声明为可变的,以便能够改变其状态。(lambda主体内的普通局部变量与其他普通局部变量一样是可变的。)

mutable只能应用于数据成员。这意味着允许从const成员函数给数据成员赋值。关键字对于局部变量没有意义,不能应用于它们。