学校では、独自の配列クラス (継承されていない) を定義するためのクラス インターフェイスが提供されています。
代入演算子 (=) と比較演算子 (==)、およびインデックス演算子のオーバーロードに問題があります。
これはクラスインターフェースで私に与えられました:
Array& operator = (Array const& array1); // overload assignment operator
bool operator == (Array const& array1); // overload == operator
int const& operator [] (unsigned int index) const; // overload index operator
int& operator [] (unsigned int index); // overload index operator
私が理解できないように見えるのは、それを割り当てる方法です。新しい変数に割り当てたい配列が関数に渡された場合、その配列の値をどのように返して新しい変数に割り当てますか。それとも、新しいメモリの場所を割り当てるだけで、関数を呼び出したものに自動的に割り当てますか?
== 演算子を使用すると、比較対象をどのように知ることができますか? 関数と呼ばれるものを参照する方法がわかりません。値を比較するにはどうすればよいですか?
インデックス演算子をオーバーロードする方法がほとんどわかりません。インデックス演算子を使用している変数が配列の最初の int を指している場合、それをインクリメントして、呼び出されたインデックスの値を返すにはどうすればよいですか?
言うまでもなく、何のためにオーバーロードしているのか正確にはわかりません。2 つのインデックス演算子の 2 つのオーバーロードは同じように見えます。彼らのために何をすべきかわかりません。
私の先生は、代入演算子はコピー コンストラクターのようなものだと言いました。私は次のように書きました。
Array::Array(Array const& oldarray)
{
int *arraycopy;
arraycopy = new int[oldarray.length] // length is a member variable that has already been initiated
for(int i = 0; i < oldarray.length; i++) {
arraycopy[i] = oldarray[i];
}
}
代入演算子も同じですか?私はこれらすべてに混乱しており、すべての助けに本当に感謝しています! ありがとう!