0

クラスに 2 つのオーバーロード メソッドがあり、クラスのメソッドを呼び出すときに、アップキャストまたはダウンキャストによって 2 つのオーバーロード メソッドの引数のいずれかに一致する引数を渡します。では、どちらが本当に呼ばれるでしょうか?

function1(TypeA x)function1(TypeB x)、 を呼び出すと、function1(m)mアップキャストでき、 にダウンキャストできるので、どちらが呼び出されるのでしょうか?TypeAmTypeBfunction1

4

2 に答える 2

2

最初の例では、浮動小数点の精度が 1 に加算されます (「整数昇格」と呼ばれていると思います)。

2 番目の例では、目的の型に暗黙的にキャストするために、小数部分が切り捨てられます。これは、これに関する C++ 標準ドラフトの状態です (n3242 4.9-1):

浮動小数点型の prvalue は、整数型の prvalue に変換できます。変換は切り捨てられます。つまり、小数部分は破棄されます。切り捨てられた値を目的の型で表すことができない場合、動作は未定義です。[注: 目的の型が bool の場合は、4.12. —終わりのメモ]

于 2013-05-30T08:24:36.190 に答える