C ++中的可变局部变量

时间:2014-05-27 07:57:06

标签: c++ const mutable

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

  

不允许出现错误

在使用Visual Studio进行编译时。

C ++是否有某种Mutable局部变量?

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

感谢

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

mutable定义了

  

类的成员不会影响外部可见状态   上课。

它可以帮助您保持常识的正确性。

局部变量不代表类状态(它具有局部范围),因此可变性在该上下文中没有意义。

答案 2 :(得分:0)

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