4

这是关于统计机器翻译系统Moses的源代码。在Mosesdecoder 项目Factor的类中,关键字 有一个奇怪的用法:mutable

class Factor {

    __SOME_OTHER_CODE__

    // FactorCollection writes here.
    // This is mutable so the pointer can be changed to pool-backed memory.
    mutable StringPiece m_string
    size_t m_id;

    __SOME_OTHER_CODE__
}

的完整文件Factor.h这里。我知道mutable当您想要修改 const 成员函数中的成员变量,或者想要修改 lambda 表达式中的某些超出范围的变量时,会使用它。但是,我不明白mutable这段代码在做什么。

我很感激任何提示。谢谢你。

4

1 回答 1

4

你提供的信息太少,我们所能做的就是猜测。

也就是说,从评论中,听起来他们有某种存储池,他们可能希望将字符串的存储移动到存储池中。与 的大多数用法一样mutable,它用于处理仍然使对象在逻辑上未修改的按位修改(即,它们更改指针,使其指向相同的数据,但位于不同的地址)。

于 2013-12-16T06:58:31.243 回答