「代入演算子」のオーバロード

今日始めて代入演算子オーバーロードを試してその顛末。おっと、ここで言う代入演算子は、左右とも同じクラスの場合を指す。次は一例。

number a,b;
a = b;

代入演算子は、広く使われている定型文がある。

number & operator=(const number &b){
  num = b.num;
  return *this;
}

注意点は、

  1. 戻り値の型を必ず「&」の参照返しにすること
  2. 引数を必ず「&」の参照渡しにすること
  3. 戻り値を必ず「thisのポインタ」(*this)にすること

普通privateで使われる。publicにする意味はあまり、、、わからない。

これ以外の宣言で正しいとか正しくないとかコンパイルできる出来ないという問題があるのだが、それはまた別の記事。