有如下函数模板声明: 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)

题目
有如下函数模板声明: 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)


相似考题
更多“有如下函数模板声明: template<typename T> TMax(T a,T b){return(a>=b)?a:b;} 下列对 ”相关问题
  • 第1题:

    ( 25 )有如下模板声明:

    template <typename T1, typename T2> class A;

    下列声明中,与上述声明不等价的是

    A ) template <class T1, class T2> class A;

    B ) template <class T1, typename T2> class A;

    C ) template <typename T1, class T2> class A;

    D ) template <typename T1, T2> class A;


    正确答案:D

  • 第2题:

    有如下函数模板:templateT square(T x){return x*x;}其中T是A.函数形参B.函数实参C.模

    有如下函数模板:template<class T>T square(T x){return x*x;}其中T是

    A.函数形参

    B.函数实参

    C.模板形参

    D.模板实参


    正确答案:C
    解析:本题考查的知识点是:函数模板。声明一个函数模板的格式是:
    template模板形参表声明>>函数声明>
    其中的模板形参表声明>是由一个或多个模板形参>组成。每个模板形参>具有下面几种形式:
    (1)typename参数名>
    (2)class参数名>
    (3)类型修饰>参数名>
    由此可见,题中的T是模板形参。故本题应该选择C。

  • 第3题:

    有如下函数模板定义:templateT2 plus T1 t1,T3 t3){retur

    有如下函数模板定义: template<typename T1,typename T2,typename T3> T2 plus T1 t1,T3 t3){return t1+t3;} 则以下调用中正确是

    A.plus(3,5L);

    B.plus<>(3,5L);

    C.plus<int>(3,5L);

    D.plus<int,double>(3,5L);


    正确答案:D
    解析:本题考核函数模板的使用。C++中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾:需要获得特定类型的返回值,而不管参数的类型如何:虚拟类型参数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中虚拟类型参数T2没有出现在模板函数的形参列表中,所以在调用时不能省略,D选项的调用省略了T3,这是允许的。

  • 第4题:

    有如下函数模板定义: template T1 Fun(T2 n){return n*5.0;} 若要求

    有如下函数模板定义:

    template<typename T1, Typename T2>

    T1 Fun(T2 n){return n*5.0;}

    若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。

    A) FUN(9)

    B) FUN<9>

    C) FUN<double>[9]

    D) FUN<9>(doubl

    A.

    B.

    C.

    D.


    正确答案:C

  • 第5题:

    有如下函数模板定义:template T func(T x, T y){return x*x*y*y;)在下列对func的调用中

    有如下函数模板定义: template <class T> T func(T x, T y){return x*x*y*y;) 在下列对func的调用中,错误的是

    A.func(3,5);

    B.func(3.0,5.5);

    C.func(3,5.5);

    D.func<int>(3,5.5);


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

  • 第6题:

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

    有如下函数模板声明:template<typename T>T Max(Ta,Tb){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

  • 第7题:

    下列的模板说明中,正确的是( )。A.template B.template C.template

    下列的模板说明中,正确的是( )。

    A.template <T1,T2>

    B.template <class T1,T2>

    C.template <class T1,class T2>

    D.template <typename T1;typename T2>


    正确答案:A
    解析:模板说明,要求每个参数前都有一个类型参数,多个参数需用逗号隔开。

  • 第8题:

    有如下函数模板声明: 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型。

  • 第9题:

    有如下函数模板:templateT square (Tx) {return x*x;)其中T是()A.函数形参B.函数实参C.

    有如下函数模板: template<class T>T square (Tx) {return x*x;) 其中T是( )

    A.函数形参

    B.函数实参

    C.模板形参

    D.模板实参


    正确答案:C
    解析:此题考查的是函数模板。声明一个函数模板的格式是:
      template模板形参表声明>函数声明,{函数体}
      其中的模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。

  • 第10题:

    有如下模板声明:templateclass A;下列声明中,与上述声明不等价的是A.t

    有如下模板声明: template<typename T1,typename T2>class A; 下列声明中,与上述声明不等价的是

    A.template<class T1,class T2>class A;

    B.template<class T1,typename T2>class A;

    C.template<typename T1,class T2>class A;

    D.template<typename T1,T2>class A;


    正确答案:D
    解析:在模板定义中,一般情况下,class和typename可以互换。在选项D中,T2没有类型参数限制定义,所以和题干给出的定义不同。

  • 第11题:

    下列关于函数模板的定义中,合法的是()。A.template class T abs(T z) {return z<0 ?-z:z;}B.te

    下列关于函数模板的定义中,合法的是( )。

    A.template class <T>T abs(T z) {return z<0 ?-z:z;}

    B.template<typename T>T abs(T z) {return z<0 ?-z:z;}

    C.template T<class T>abs(T z) {return z<0 ?-z:z;}

    D.template T abs(Tz) {return z<0 ?z:z;}


    正确答案:B
    解析:声明一个函数模板格式是:
      template模板形参表声明>函数声明>
      其中模板形参表声明>是由一个或多个模板形参>组成(如果是多个需要用逗号隔开)。其中,模板形参>可以换成class,函数的声明部分和一般函数的声明部分类似,只有某些类型修饰符被虚拟类型参数替代。

  • 第12题:

    单选题
    有如下模板声明:template class A;下列声明中,与上述声明不等价的是(  )。
    A

    template<class T1,class T2> class A;

    B

    template<class T1,typename T2> class A;

    C

    template<typename T1,class T2> class A;

    D

    template<typename T1,T2> class A;


    正确答案: B
    解析:
    在类模板中,数据类型本身是它的参数,因而是一种参数化类型的类,是类的生成器。对于本题来说,模板形参表中包括类型Tl和T2两个类型参数,D项,T1说明其类型,而T2没有说明其类型,与题干中的模板说明不一致。

  • 第13题:

    有如下函数模板声明: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
    解析: 引用模板函数和引用一般的函数在语法形式上没有任何区别。说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。

  • 第14题:

    下列函数模板的定义中,合法的是A.template T abs(T x){return x<0?-x:x;}B.templat

    下列函数模板的定义中,合法的是

    A.template <typename T> T abs(T x){return x<0?-x:x;}

    B.template class <T> T abs(T x){return x<0?-x:x;}

    C.template T<class T>abs(T x){return x<0?-x:x;}

    D.template T abs(T x){return x<0?-x:x;}


    正确答案:A
    解析:本题考查的知识点是:函数模板。声明一个函数模板的格式是:
    template模板形参表声明>>函数声明>
    其中的模板形参表声明>是由一个或多个模板形参>组成。每个模板形参>具有下面几种形式:
    (1)typename参数名>
    (2)class参数名>
    (3)类型修饰>参数名>
    故本题应该选择A。

  • 第15题:

    已知一个函数模板定义为: template T1 FUN(T2 n){return n*5.0;} 若

    已知一个函数模板定义为:

    template<typename T1, typename T2>

    T1 FUN(T2 n){return n*5.0;}

    若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为______。


    正确答案:FUNdouble>(7)或FUNdoubleint>(7)
    FUNdouble>(7)或FUNdouble,int>(7) 解析:此题考查的是函数模板的调用。本题模板函数的返回值类型为T1,形参类型为T2。题目要求用int型参数7调用,并返回一个double型数据。故调用格式为FUNdouble,int>(7)。也可省略T2的类型int,简写为FUNdouble>(7)。

  • 第16题:

    有如下函数模板:templateT cast (U u){return u;}其功能是将U 类型数据

    有如下函数模板: template<typename T,typename U> T cast (U u){ return u;} 其功能是将U 类型数据转换为T类型数据。已知i为int 型变量,下列对模板函数cast的调用中正确的是( )。

    A.cast (i);

    B.cast <>(i);

    C.cast<char*,int>(i);

    D.cast<double,int>(i);


    正确答案:D

  • 第17题:

    有如下函数模板定义: template T2 plus(T1 t1,T3 t3){re

    有如下函数模板定义: template <typename T1,typename T2,typename T3> T2 plus(T1 t1,T3 t3){return t1+t3;}

    A.plus(3,5L);

    B.plus<>(3,5L);

    C.plus<int>(3,5L);

    D.plus<int, double>(3,5L);


    正确答案:D
    解析:本题考核函数模板的使用。C++中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何:虚拟类型参数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中虚拟类型参数T2没有出现在模板函数的形参列表中,所以在调用时不能省略,D选项的调用省略了T3,这是允许的。

  • 第18题:

    以下函数模板main()的功能是:返回数组a中最大元素的值。请将横线处缺失部分补充完整。

    template<typename T>Tmax(Ta[],intn)

    {

    Tm=a[0];

    for(int i:1;i(n;i++)

    if(a[i]>m______;

    return m;

    }


    正确答案:(eh=filel.get())!=eof。
    (eh=filel.get())!=eof。 解析: 本题是判断文件是否达到结尾,可以使用流输入的get函数获得当前字符,然后判断该字符是否是eof即可。

  • 第19题:

    有如下函数模板: template T cast(Uu){ return u;} 其功能是

    有如下函数模板: template<typename T,typename U> T cast(Uu){ return u;} 其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是

    A.cast(i);

    B.cast<>(i);

    C.cast<char*,int>(i);

    D.cast<double,int>(i);


    正确答案:D
    解析:本题考查的知识点是模板函数的调用。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板的实参表(用<和>括起来的参数表)或从模板函数实参表 (用(和)括起来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表<>也可以不要。本题中cast()函数的实参 i只能确定模板参数u的类型为int,而不能确定另外一个模板参数T。故选项A与B不正确。选项C希望将int转型为char*,C++中不允许隐式的这样转换类型,所以也不正确。故应该选择D。

  • 第20题:

    有如下函数模板定义: template<typename T1,typename T2,typename T3) T2 plus(T1 t1,T3 t3){return t1+t3;} 则以下调用正确是( )。

    A.plus(3,5L);

    B.plus<>(3,5L);

    C.plus<int>(3,5L);

    D.plus<int,double)(3,5L);


    正确答案:D
    解析: C++中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。从模板函数实参表获得的信息有矛盾:需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数滑出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中虚拟类型参数T2没有出现在模板函数的形参列表中,所以在调用时不能省略,D选项的调用省略了T3,这是允许的。

  • 第21题:

    下列模板声明中有语法错误的是A.templateT fun(T x){return x;}B.template

    下列模板声明中有语法错误的是

    A.template<typename T>T fun(T x){return x;}

    B.template<typename T>T fun(T x,int n){return x术n;}

    C.template<class T>T fun(T*P){return*P;}

    D.template


    正确答案:C

  • 第22题:

    有如下函数模板定义: template T1 fun(T1 a1) { return(al+a2+a3);

    有如下函数模板定义: template<typename T1,int a2,int a3> T1 fun(T1 a1) { return(al+a2+a3); } 则下列调用中正确的是( )。

    A.fun<int,4,3>(5);

    B.fun<4,3>(5);

    C.fun<int,int,int>(5);

    D.fun(5);


    正确答案:A
    解析: 类模板是类的抽象,类是类模板的实例。在调用时,尖括号内指定实际的类型名,在编译时,编译系统就用int取代类模板中的类型参数,这样就具体化了类模板。其中的参数为4,3。

  • 第23题:

    在下列模板说明中,正确的是()

    • A、template〈typename T1,T2〉
    • B、template〈class T1,T2〉
    • C、template〈typename T1,typename T2〉
    • D、template(typedef T1,typedef T2)

    正确答案:C