>>311
> int f()
> int f(int a)
> は引数が違うので別物と見られます。

これはあってるけど...

> int f(int a)が使われ。

アホか。そういう状況 (=C++) なら、int f(int a) はまだ宣言されてないから、単にそんな関数は無いと怒られるだけのことだよ。

>>312
仮想関数 ? C++ の初歩からやり直すべし。

>>313
これが、正解。

>>314
キャストしようが無いだろ。
f(3.14) をコンパイルしている時点では、f(int) なのか f(double) なのかわからんのだから。