0

クラスノートを読んで講義を聞いたので、とても混乱しています。

次のすべての関数が C++ プログラムに存在し、最初にプロトタイプ化されている場合、

TestIt('A', int('A'))電話?

A.int TestIt(char ch, char ix);

B.int TestIt(char ch, short ix);

C.int TestIt(char ch = 'A');

D.実装依存

E.なし

これはひっかけ問題ですか?

TestIt('A', 'A');

char char を返しますか?

shortはint型だからBなのかな?

例えばint('A')

それも無いかもしれません。

4

1 に答える 1

1

あいまいなので、ありません。

の場合TestIt('A', int('A'))、引数の型はcharandintです。2 つの引数は、C) が実行可能な候補ではないことを意味します。A) と B) は実行可能です。

ただし、2 番目の引数は から または に変換するint必要shortがありcharます。どちらも整数変換です。したがって、オーバーロードを比較すると、どちらも同じランクになります。与えられた引数のセットに対して同じランクの 2 つ以上の関数 (およびタイブレーカーは適用されません) => あいまい。

TestIt('A', 'A')あなたが電話し、候補者がいた場合は異なります

  1. void TestIt(char, int)
  2. void TestIt(char, short)

この場合、なぜあいまいではないのかを練習として見つけようとすることができます ;)

于 2013-11-01T23:29:28.897 に答える