📜  C ++ |模板|问题3

📅  最后修改于: 2021-06-29 19:33:10             🧑  作者: Mango

#include 
using namespace std;
  
template 
T max(T x, T y)
{
    return (x > y)? x : y;
}
int main()
{
    cout << max(3, 7) << std::endl;
    cout << max(3.0, 7.0) << std::endl;
    cout << max(3, 7.0) << std::endl;
    return 0;
}

(一种)

7
7.0
7.0

(B)所有cout语句中的编译器错误,因为未指定数据类型。
(C)最后一个cout语句中的编译器错误,因为对max的调用不明确。
(D)以上都不是答案: (C)
说明:对max函数的第一次和第二次调用是有效的调用,因为传递的两个参数都具有相同的数据类型(即,分别为int和float)。但是对max函数的第三次调用具有不同数据类型的参数,因此由于对max的调用不明确,因此它将在最后一个cout语句中生成Compiler Error。因此,选项C是正确的
这个问题的测验