为什么 std::slice_array::operator= 常量?
Why is std::slice_array::operator= const?
std::slice_array
的All overloads of assignment operators都是const成员函数,但是为什么要这样设计呢?
可能是因为std::slice_array
被设计成一个代理class,而这些赋值运算符只是修改引用的元素,而没有修改代理class本身,所以它们是合理地成为 const 成员函数。但是,为什么 std::slice_array
的 those compound operators 不是 const 成员函数?
对于第一个问题,slice_array
只是一个代理class。它具有引用语义,因此其实际成员的 none 会被任何操作修改,因此标记所有内容 const
可以提高可用性。
对于第二个问题,所有运算符 都是 声明的 const
(根据 current working draft and back to C++11)。与赋值运算符为 const
的原因相同。这只是 cppreference 错误识别它们的错误。发生。
std::slice_array
的All overloads of assignment operators都是const成员函数,但是为什么要这样设计呢?
可能是因为std::slice_array
被设计成一个代理class,而这些赋值运算符只是修改引用的元素,而没有修改代理class本身,所以它们是合理地成为 const 成员函数。但是,为什么 std::slice_array
的 those compound operators 不是 const 成员函数?
对于第一个问题,slice_array
只是一个代理class。它具有引用语义,因此其实际成员的 none 会被任何操作修改,因此标记所有内容 const
可以提高可用性。
对于第二个问题,所有运算符 都是 声明的 const
(根据 current working draft and back to C++11)。与赋值运算符为 const
的原因相同。这只是 cppreference 错误识别它们的错误。发生。