【问题标题】:Under what condition is the constant dereferencing operator called? [duplicate]在什么条件下调用常量解引用运算符? [复制]
【发布时间】:2016-03-27 18:30:19
【问题描述】:

我有一个简单的课程

class Array
{
public:
    Array();
    ~Array();

    // Dereferencing operators
    int operator[](std::size_t index) const;
    int& operator[](std::size_t index);
}

我的问题是,int operator[](std::size_t index) const 在什么条件下被调用?如何强制 C++ 调用 int operator[](std::size_t index) const 而不是 int& operator[](std::size_t index)?如果我只实现其中一个运算符会怎样?

【问题讨论】:

    标签: c++ class operator-overloading dereference


    【解决方案1】:

    我的问题是,在什么条件下调用 int operator[](std::size_t index) const?

    当它被一个 const 的 Array 实例调用时

    如何强制 C++ 调用 int operator[](std::size_t index) const 而不是 int& operator[](std::size_t index)?

    将数组的可变实例转换为 const 引用

    如果我只实现其中一个运算符会怎样?

    如果您只实现 const ,您将无法使用 operator[] 写入下标。

    如果你只实现非常量,你将无法读取 Array 的 const 实例的下标。

    【讨论】:

      猜你喜欢
      • 2015-05-23
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 2014-01-15
      • 2013-02-25
      • 2011-08-19
      • 1970-01-01
      相关资源
      最近更新 更多