0

好吧,我很困惑,因为我阅读了课堂笔记并听了讲座。

如果以下所有函数都存在于 C++ 程序中并且首先被原型化,那么

TestIt('A', int('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 对吗?

是 B 是因为 short 是 int 的一种吗?

例如int('A')

也可能没有。

4

1 回答 1

1

没有,因为它是模棱两可的。

对于TestIt('A', int('A')),参数的类型是charint。两个论点意味着 C) 不是可行的候选者。A) 和 B) 是可行的。

但是,第二个参数必须从转换intshortor 或char。两者都是积分转换。因此,在比较过载时,两者具有相同的等级。对于给定的一组参数,两个或多个具有相同等级的函数(并且不适用决胜局)=> 模棱两可。

如果你打电话TestIt('A', 'A')给候选人,情况会有所不同

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

您可以尝试找出为什么在这种情况下它不模棱两可;)

于 2013-11-01T23:29:28.897 回答