【问题标题】:Why is std::slice_array::operator= const?为什么 std::slice_array::operator= const?
【发布时间】:2018-02-07 17:28:01
【问题描述】:

std::slice_array 中的All overloads of assignment operators 都是 const 成员函数,但为什么会这样设计呢?

可能原因是std::slice_array被设计成一个代理类,而这些赋值运算符只是修改了引用的元素,没有修改代理类本身,所以它们是const成员函数是合理的。但是,为什么 those compound operatorsstd::slice_array 不是 const 成员函数?

【问题讨论】:

    标签: c++ constants slice member-functions valarray


    【解决方案1】:

    对于第一个问题,slice_array 只是一个代理类。它具有引用语义,因此它的实际成员都不会被任何操作修改,因此将所有内容标记为const 可以提高可用性。

    对于第二个问题,所有运算符声明为const(根据current working draft 并返回C++11)。出于同样的原因,赋值运算符是const。这只是 cppreference 错误识别它们的一个错误。发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 2018-07-30
      • 2015-12-16
      • 1970-01-01
      • 2010-11-09
      • 2015-03-14
      • 2017-08-15
      • 1970-01-01
      相关资源
      最近更新 更多