暗黙の型変換

昨日の、

CBase obj = 1;

の件はC++でいう『暗黙の型変換』でした。つまりクラス側では、クラス自身を引数にとる『代入演算子』がオーバーロードされていました。
授業でやっていたのに、さっぱり忘れていたのでメモ。

コンパイルの考え(クラスはCBaseとする)

  1. 『unsigned int 型』を引数にとる『= 演算子』はないので、そのままでは代入できない
  2. 『unsigned int 型』を引数にとる『コンストラクタ』を発見する
  3. 『CBase 型』を引数にとる『= 演算子』を発見する
  4. 以上より、『unsigned int 型』を引数にとって『CBase 型オブジェクト』を作成し、『= 演算子』で代入する

とのことです。