我有一个话题我很困惑,我需要一些细节.它是一个const版本和非const版本的操作符重载.
// non-const double &operator[](int idx) { if (idx < length && idx >= 0) { return data[idx]; } throw BoundsError(); }
我明白这个类的这个功能部分,使用索引并检查其逻辑,返回类中数组数据的索引.还有一个功能与同一个机构,但与函数调用
const double &operator[](int idx) const
为什么我们需要两个版本?
此示例问题也可能有助于详细说明.
在下面的每个实例中使用哪个版本?
Array a(3); a[0] = 2.0; a[1] = 3.3; a[2] = a[0] + a[1];
我假设const版本只是在[2]上调用,因为我们不想冒险修改[0]或[1].
感谢任何帮助.