当我尝试在C ++中创建一个可变的局部变量时,我得到:
不允许出现错误
在使用Visual Studio进行编译时。
C ++是否有某种Mutable局部变量?
有一个更好的方法,然后const_cost定义一个“非const”局部变量从函数返回一个const值接收他的值?
感谢
答案 0 :(得分:3)
本地变量 是可变的,除非您明确声明它们为const
。因此不需要局部变量的可变说明符。对于独立函数和类成员函数(包括const
成员函数),都是如此。
在const
成员函数中,""" const
是正在操作的类的实例(this
)。局部变量本身不是const
,除非你声明它们。
唯一的例外是lambdas。 Lambda捕获的变量默认为" const"因为它们是捕获的成员,生成的函数调用操作符是const
。您需要将lambda声明为可变,以便能够改变其状态。 (虽然lambda体内的普通局部变量像其他普通局部变量一样可变。)
答案 1 :(得分:3)
mutable定义了
类的成员不会影响外部可见状态 上课。
它可以帮助您保持常识的正确性。
局部变量不代表类状态(它具有局部范围),因此可变性在该上下文中没有意义。
答案 2 :(得分:0)
mutable
只能应用于数据成员。这意味着允许从const
成员函数分配给数据成员。关键字对局部变量没有意义,也不能应用于它们。