在 std::lock_guard<> 的声明中添加 const 有什么意义?
What is the point of adding const to the declaration of std::lock_guard<>?
在一些示例代码中,我看到以下带有 const
:
const std::lock_guard<std::mutex> lock( mux );
在其他一些示例中,没有 const
。
任何技术或语义差异? const one 是否以某种方式向 reader 发出了一些有趣的信号?比如是不是要提醒他们锁上以后不会出事?
有些人认为在 C++ 中默认可变是不理想的,因此改为 everything const
。 const
可以避免因无意中修改该变量而导致的编程错误。
std::lock_guard
的 const
实例与非 const
实例的行为相同。添加 const
和省略它都没有任何好处。
该类型没有成员函数,不可复制不可移动,所以本质上没有任何区别。
我会将 const
视为噪声并将其删除。
在声明中添加 const
可免费提供一份文档,说明 此实例是不可变的,而无需查看 std::lock_guard
声明。
当然,它不会提供任何性能优势,因为 std::lock_guard
本质上是不可变的,但您代码的所有读者可能都不知道这一点。
在一些示例代码中,我看到以下带有 const
:
const std::lock_guard<std::mutex> lock( mux );
在其他一些示例中,没有 const
。
任何技术或语义差异? const one 是否以某种方式向 reader 发出了一些有趣的信号?比如是不是要提醒他们锁上以后不会出事?
有些人认为在 C++ 中默认可变是不理想的,因此改为 everything const
。 const
可以避免因无意中修改该变量而导致的编程错误。
std::lock_guard
的 const
实例与非 const
实例的行为相同。添加 const
和省略它都没有任何好处。
该类型没有成员函数,不可复制不可移动,所以本质上没有任何区别。
我会将 const
视为噪声并将其删除。
在声明中添加 const
可免费提供一份文档,说明 此实例是不可变的,而无需查看 std::lock_guard
声明。
当然,它不会提供任何性能优势,因为 std::lock_guard
本质上是不可变的,但您代码的所有读者可能都不知道这一点。