相关疑难解决方法(0)

'const'在类的函数声明中的含义是什么?

const这些声明中的含义是什么?该const混淆了我.

class foobar
{
  public:
     operator int () const;
     const char* foo() const;
};
Run Code Online (Sandbox Code Playgroud)

c++ const declaration c++-faq

689
推荐指数
9
解决办法
25万
查看次数

Const和非Const运算符重载

我有一个话题,我很困惑,我需要详细说明.它是使用const版本和非const版本重载的运算符.

// non-const
double &operator[](int idx) {
    if (idx < length && idx >= 0) {
        return data[idx];
    }
    throw BoundsError();
}
Run Code Online (Sandbox Code Playgroud)

我理解这个函数的一部分,取一个索引并检查它的逻辑,返回类中数组数据的索引.还有一个具有相同主体的函数,但函数调用为

const double &operator[](int idx) const
Run Code Online (Sandbox Code Playgroud)

为什么我们需要两个版本?

此示例问题也可能有助于详细说明.下面的每个实例使用哪个版本?

Array a(3);
a[0] = 2.0;
a[1] = 3.3;
a[2] = a[0] + a[1];
Run Code Online (Sandbox Code Playgroud)

我的假设是只调用const版本,a[2]因为我们不想冒险修改a[0]a[1].

谢谢你的帮助.

c++ const operator-overloading

23
推荐指数
2
解决办法
4万
查看次数

标签 统计

c++ ×2

const ×2

c++-faq ×1

declaration ×1

operator-overloading ×1