トピックがあります。私は混乱しています。これは、constバージョンと非constバージョンの演算子オーバーロードです。ConstおよびNon-Const演算子オーバーロード
// non-const
double &operator[](int idx) {
if (idx < length && idx >= 0) {
return data[idx];
}
throw BoundsError();
}
私はクラスのこの機能部分は、インデックスをとり、その論理は、クラス内の配列データのインデックスを返すことを確認することを理解します。同じ本体で関数呼び出しがある関数もあります
const double &operator[](int idx) const
なぜ2つのバージョンが必要ですか?
このサンプルの質問もまた詳しく説明します。 以下の各インスタンスでどのバージョンが使用されていますか?我々はa[0]
またはa[1]
を修正するリスクにしたくないので、constのバージョンでのみa[2]
で呼び出され
Array a(3);
a[0] = 2.0;
a[1] = 3.3;
a[2] = a[0] + a[1];
私の仮説。
ありがとうございました。
出力の中で呼び出されたものを簡単にチェックすることができます。 – chris
それは講義スライドにありますので、私はそれらを利用するためのクラスを作成する必要はないと思っています。代わりに誰かが私たちがなぜこれを行うのか理解できるように助けてください –
怠け者ではなく、より良い。 –