在什么情况下调用常量取消引用运算符?
Under what condition is the constant dereferencing operator called?
我有一个简单的class
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)
?如果我只实现其中一个运算符会怎样?
My question is, under what condition is int operator[](std::size_t index) const called?
在常量数组实例上调用时
How can I force C++ to call int operator[](std::size_t index) const instead of int& operator[](std::size_t index)?
将数组的可变实例转换为常量引用
What would happen if I only implement one of the operators?
如果只实现 const,将无法使用 operator[]
写入下标。
如果只实现非常量,将无法读取数组的 const 实例的下标。
我有一个简单的class
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)
?如果我只实现其中一个运算符会怎样?
My question is, under what condition is int operator[](std::size_t index) const called?
在常量数组实例上调用时
How can I force C++ to call int operator[](std::size_t index) const instead of int& operator[](std::size_t index)?
将数组的可变实例转换为常量引用
What would happen if I only implement one of the operators?
如果只实现 const,将无法使用 operator[]
写入下标。
如果只实现非常量,将无法读取数组的 const 实例的下标。