- 619 名前:デフォルトの名無しさん mailto:sage [2021/05/01(土) 17:09:26.40 ID:1WejqaZh.net]
- >>602
C++で関数呼び出しを書いた場合、どの関数が呼び出されるかは Best Matching Algorithm で選ばれているので実引数が charの場合は、 同じ場所の仮引数がcharである関数を優先的に選ぼうとする。 もし、同じ場所の仮引数がcharであるものが見つからなければ、 同じ場所の仮引数が int であるものを探して、見つかればそれを選択する。 このとき、実引数と仮引数の型の「距離」のような概念があり、 距離が近いものが選ばれる。複数の引数が有る場合で、二つの引数で 距離が近い関数がどっちもどっちになる場合には、「曖昧」であると、 され、エラーになる。 >その場合、受け取ったのがintかcharかプログラムはどうやって見分けるのですか? ここであなたの言っている「見分ける」という意味が分かりにくいが、 オーバーロードされた関数は、C++レベルでは同じ名前に見えていてもが アセンブラレベルでは別の関数名になっていて、別の関数として扱われていて、 別の関数が呼び出されているから「見分ける」以前問題になっている。
|

|