itgle.com

有如下函数模板声明:templateT Max(T a, T B) {return (a>=B) ?a:b;}下列对函数模板有如下函数模板声明: template<typename T> T Max(T a, T B) {return (a>=B) ?a:b;} 下列对函数模板Max()的调用中错误的是A.Max(3.5,4.5)B.Max(3.5,4)C.Max<double>(3.5,4.5)D.Max<double>(3.5,4)

题目
有如下函数模板声明:templateT Max(T a, T B) {return (a>=B) ?a:b;}下列对函数模板

有如下函数模板声明: template<typename T> T Max(T a, T B) {return (a>=B) ?a:b;} 下列对函数模板Max()的调用中错误的是

A.Max(3.5,4.5)

B.Max(3.5,4)

C.Max<double>(3.5,4.5)

D.Max<double>(3.5,4)


相似考题
参考答案和解析
正确答案:B
解析:本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。例如,本题中的B) 选项,编译系统从第一个参数“3.5”获得的信息是“T对应于double”,而从第二个参数“4”处获得的信息是“T对应于int”,二者相互矛盾,在编译时会产生错误。对于D) 选项中紧跟在函数名后的double>就是模板实参表,通过它通知编译系统在调用过程中,int型的参数“4”将被自动换成double型。
更多“有如下函数模板声明:template<typename T>T Max(T a, T B) {return (a>=B) ?a:b;}下列对函数模板 ”相关问题
  • 第1题:

    有如下函数模板声明: template T Max(T a,T b){return(a>=b)? a:b;} 下列对函数模板

    有如下函数模板声明:

    template<typename T>

    T Max(T a,T b){return(a>=b)? a:b;}

    下列对函数模板Max( )的调用中错误的是

    A.Max(3.5,4.5)

    B.Max(3.5,4)

    C.Max<double>(3.5,4.5)

    D.Max<double>(3.5,4)


    正确答案:B
    解析:本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确定是否匹配函数模板中对应的形参。例如,本题中的B选项,编译系统从第一个参数"3.5"获得的信息是"T对应于double",而从第二个参数"4"处获得的信息是"T对应于int",二者相互矛盾,在编译时会产生错误。对于D选项中紧跟在函数名后的double>就是模板实参表,通过它通知编译系统在调用过程中,将int型的参数"4"将换成double型。

  • 第2题:

    有如下函数模板声明: template T Max(T a,T b){return(a>-b)?a:b;}下列对函数模板Ma

    有如下函数模板声明: template<typename T> T Max(T a,T b){return(a>-b)?a:b;} 下列对函数模板Max()的调用中错误的是( )。

    A.Max(3.5,4.5)

    B.Max(3.5,4)

    C.Max<double>(3.5,4.5)

    D.Max<double>(3.5,4)


    正确答案:B
    解析: 此题考查的是函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题选项B)中,编译系统从第一个参数“3.5”获得信息“double型数据”和从第二个参数获得信息“int 型数据”两者矛盾,错误;A、选项C)正确:选项D)中,函数名后的double>是模板实参表,编译系统会将int 型的形参“4”自动转化成double类型。

  • 第3题:

    有如下函数模板声明: template TMax(T a,T b){return(a>=b)?a:b;} 下列对

    有如下函数模板声明: template<typename T> TMax(T a,T b){return(a>=b)?a:b;} 下列对函数模板Max()的调用中错误的是( )。

    A.Max(3.5,4.5)

    B.Max(3.5,4)

    C.Max<double>(3.5,4.5)

    D.Max<double>(3.5,4)


    正确答案:B
    解析:此题考查的是函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是,说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题选项B)中,编译系统从第一个参数“3.5”获得信息“double型数据”和从第二个参数获得信息“血型数据”两者矛盾,选项A)、C)正确;选项D)中,函数名后的double>是模板实参表,编译系统会将int型的形参“4”自动转化成double类型。

  • 第4题:

    有如下函数模板声明:templateT Max(T a,T b){return(a)b)?a:b;}下列对函数模板Max()

    有如下函数模板声明: template<typename T> T Max(T a,T b){return(a)b)?a:b;} 下列对函数模板Max()的调用中错误的是( )。

    A.Max(3.5,4.5)

    B.Max(3.5,4)

    C.Max(double)(3.5,4.5)

    D.Max(double)(3.5,4)


    正确答案:B
    解析: 本题考查的是函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是,说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否调用函数模板中的对应形参。本意选项B中,编译系统从第一个参数“3.5”获得信息“double型数据”和从第二个参数获得信息“int型数据”两者矛盾,

  • 第5题:

    有如下函数模板声明:template T Max(T a,T b){return(a>=b)?a:b;}下列对函数模板Max

    有如下函数模板声明: template <typename T> T Max(T a,T b){return(a>=b)?a:b;}下列对函数模板Max的调用中错误的是______ 。

    A.Max(3.5,4.5)

    B.Max(3.5,4)

    C.Max<double>(3.5,4.5)

    D.Max<double>(3.5,4)


    正确答案:B
    解析:使用模板,应避免二义性