gl5_progのメモ

自分のためのメモとかまとめとか

(ideoneメモ)プリミティブ型みたいな挙動をさせる

http://ideone.com/IL1t5i

float + double の演算結果はdoubleになる。
こういうのをユーザー定義クラスでどうやればいいのか試してみた。
格下であるFloatにのみDouble operator+(Double)を持たせることで、 Float + Double の結果をDoubleにした。
Double + Float はFloatのoperator Doubleが呼ばれ、結果、Double::operator+(Double)が呼ばれることになり、評価結果はDouble型になる。

ちなみに#define USE_CAST_OP でキャスト演算子による実装と1引数コンストラクタによる実装を切り替え可能。