【发布时间】:2017-03-30 21:46:24
【问题描述】:
我正在阅读 B. Stroustrup 在其第 11.4.3.4 节“可变 Lambdas”中的 C++ 编程语言,其中内容如下:
通常,我们不想修改函数对象的状态( 闭包),所以默认情况下我们不能。也就是说,
operator()()用于 生成的函数对象(§11.4.1)是一个const成员函数。 在 我们想要修改状态的不太可能发生的事件(而不是 修改引用捕获的某些变量的状态; §11.4.3), 我们可以声明 lambda 是可变的。
我不明白为什么当按值捕获变量时,operator()() 的默认值是 const。这有什么道理?当我更改复制到函数对象中的变量的值时会出现什么问题?
【问题讨论】:
-
它在第一句话中说:“通常,我们不想修改函数对象的状态(闭包),所以默认情况下我们不能。”