なるほどなるほど!!
演算子のオーバーロードってそういうことか(@ ̄Д ̄@;)

関数として,演算するもの(例えばクラスや定数など)を引数で受け取って,それを演算した値をコンストラクタで初期値入力して返すってわけね!ひらめき電球
こりゃスマートだ音譜

ってことは,クラスや構造体は引数を受け取れるコンストラクタをもっとかなきゃいけないワケね(+_+)

実際コンパイラ側で何をやっているかはわからないけど,イメージ的にはこんなもんでしょうグッド!
今やっているのはどれも勉強になるビックリマーク
せっかくだからこの際mercurialも導入してバージョン管理をしていこう音譜
でもmercurialってどう使うんだ?
ってかどう便利なんだろ??
とりあえずそこら辺りにリサーチいれてみるかDASH!
実際に使ってみるまで何のことやら...って機能はいっぱいある(´Д`;)
今日はその中の一つ,仮想関数叫び

仮想関数は動的なバインディング(これも使う前はなんのことやらあせる)を行えるようになる.
どういうことかというと,
オーバーロード的なことがスーパークラス,サブクラス間で行われる.
つまり,スーパークラスの関数(関数A)と,それをオーバーライドした同名の関数(関数A')があってその関数を使う関数(関数B)があったとき(すでにややこしいドクロむかっ)に関数Bは関数AとA'どっちを使えばいいかわからなくなる.
(実際には決まっているはず...コンパイラによるのかな??)
通常通りの関数宣言であれば関数Bはスーパークラス側の関数Aを呼び出すが, 関数Aの宣言時にvirtualを付けることで関数Bはサブクラスでオーバーライドした関数A'を使うことができるようになる.
また,オーバーライドしていないときは関数Bは関数Aを呼び出すビックリマーク(この条件の時は関数A'は存在していないので当然っちゃあ当然だけども...

これのもう一つが純粋仮想関数アップ
これはスーパークラス側で処理内容が決められないときにサブクラス側で定義してね!って時に便利.
例えでいうと,
関数Cを扱う関数Dがある.けれども関数Cの具体的なコードは書いていないけど,関数Dが関数Cを使うということははっきりわかっているって時に必ずサブクラス側で定義すれば間違った処理とかしないで済むってことぶーぶー


うーん,今は理解してるからいいが...あとから見直してわかるかなぁ(^_^;)