タグ

ブックマーク / brain.cc.kogakuin.ac.jp/~kanamaru (2)

  • 第四回-03 : コピーコンストラクタ・代入演算子のオーバーロード

    ページでは「コピーコンストラクタ」、 および「代入演算子のオーバーロード」について解説する。 どういう時にコピーコンストラクタや代入演算子の記述が必要になるのかであるが、 「第二回-05 : オブジェクトの代入」や 「第三回-03 : 関数の戻り値」で既に学んだように、 メンバ変数としてポインタをもつクラスにおいて代入などを行う際に必要になるのであった。 まずこのページを学ぶまえに以前のページをしっかり復習しておくこと。 コピーコンストラクタ・代入演算子の呼ばれるタイミング まず、コピーコンストラクタと代入演算子がどのようなタイミングで呼ばれるのかを簡単に解説しておこう。 int main(){ samp x; // (1) samp y=x; // (2) samp z; z = x; // (3) // 以下、なんらかの処理 } 上記の例を見てみよう。この例は main 関数内で s

    第四回-03 : コピーコンストラクタ・代入演算子のオーバーロード
    iww
    iww 2015/08/05
  • 第四回-04 : 演算子のオーバーロード ([] と + )

    ページでは「演算子のオーバーロード」について解説する。 前のページでは代入演算子 (=) のオーバーロードを行ったが、ここでは [] 演算子と + 演算子である。 array クラスの記述 ([] 演算子のオーバーロード例) ここでは array クラスについて解説し、その過程で [] 演算子のオーバーロードについて学ぶ。 まず、array クラスの意義から解説してゆこう。以下のコード (の断片) を見てみよう。 見ての通り、要素数 10 の配列 x を定義し、その配列の 100 番目 (配列は 0 から使うので正確には 101 番目) に 1 という値を書きこんでいる。 あきらかに問題のあるプログラムだが、C/C++ では配列の境界チェックを行わないのでこのプログラムは文法上は何の問題もない。 とはいえ、(当然だが) このように境界を超えて配列の読み書きをすることは時として深刻なエラー

    第四回-04 : 演算子のオーバーロード ([] と + )
    iww
    iww 2012/07/01
    かっこのオーバーロード
  • 1