c++中的可变局部变量
Mutable local variable in C++
当我尝试在c++中创建一个可变的局部变量时,我得到:
不允许错误可变
在Visual Studio中编译。
c++有某种可变的局部变量吗?
有一个更好的方法,然后const_cost定义一个"非const"的局部变量,接收他的值从函数返回一个const值?
谢谢
mutable定义
类的成员不影响对象的外部可见状态类。
帮助你维护const的正确性。
局部变量不代表类状态(它有局部作用域),所以在这种上下文中可变是没有意义的。
局部变量是可变的,除非您显式地将它们声明为const
。因此,不需要在局部变量上使用可变说明符。对于独立函数和类成员函数(包括const
成员函数)都是如此。
在const
成员函数中,const
中的"事物"是正在被操作的类(this
)的实例。局部变量本身不是const
,除非你这样声明它们。
唯一的例外是lambdas。Lambda捕获的变量"默认为const",因为它们是捕获的成员,生成的函数调用操作符是const
。您需要将lambda声明为可变的,以便能够改变其状态。(lambda主体内的普通局部变量与其他普通局部变量一样是可变的。)
mutable
只能应用于数据成员。这意味着允许从const
成员函数给数据成员赋值。关键字对于局部变量没有意义,不能应用于它们。
相关文章:
- 使用的未初始化局部变量'Quick'
- 修复未初始化的局部变量错误
- 局部变量保留函数中的值
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- Gnuplot_i.hpp C++接口绘制局部变量而不是文件
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++中静态方法的局部变量范围
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- 离开范围后如何保护局部变量的值?
- 局部变量名称冲突
- C++ lambda:如何'freeze'局部变量的值?
- 我应该使我的局部变量常量还是可移动的
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 返回对局部变量 - C++ 的引用
- 是否可以影响 C++ 中回调函数的局部变量?
- 警告 C4101 未引用的局部变量
- 线程局部变量的初始化顺序