假设有函数模板定义如下,下列各选项中正确的是( )。 Template T Max(T a,T b,T假设有函数模板定义如下,下列各选项中正确的是( )。 Template <class T> T Max(T a,T b,T c) { if(a<b) {if(b<c) return c; else return b;} else {if(a<c) return c; else return a;} }A.float x,y,z;float max;max=Max(x,y,z);B.float x;int

题目
假设有函数模板定义如下,下列各选项中正确的是( )。 Template T Max(T a,T b,T

假设有函数模板定义如下,下列各选项中正确的是( )。 Template <class T> T Max(T a,T b,T c) { if(a<b) {if(b<c) return c; else return b;} else {if(a<c) return c; else return a;} }

A.float x,y,z;float max;max=Max(x,y,z);

B.float x;int y,z;float max;max=Max(x,y,z);

C.float x;double y,z;float max;max=Max(x,y,z);

D.三个选项都正确


相似考题
更多“假设有函数模板定义如下,下列各选项中正确的是( )。 Template <class T> T Max(T a,T b,T ”相关问题
  • 第1题:

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

  • 第2题:

    下列对模板的声明,正确的是()。A.templateB.templateC.template

    下列对模板的声明,正确的是( )。

    A.template<T>

    B.template<classT1,T2>

    C.template<class T1,classT2>

    D.template<class T1;class T2>


    正确答案:C
    解析:模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

  • 第3题:

    下列函数模板定义中错误的是A.templateB.template Q F(Q x){return Q+x;} Q F

    下列函数模板定义中错误的是

    A.template<class Q>

    B.template<class Q> Q F(Q x){return Q+x;} Q F(Q x){return x+x;}

    C.template<class T>

    D.template<class T> T F(T x){return x * x;} bool F(T x){return x>1;}


    正确答案:A
    解析:在函数模板定义中,类型参数不能参与运算。

  • 第4题:

    下列模板的声明中,正确是A.templateB.templateC.templateD.

    下列模板的声明中,正确是

    A.template<T>

    B.template<class T1,T2>

    C.template<class T1,class T2>

    D.template<class T1 ;class T2>


    正确答案:C
    解析:本题考核模板的定义。模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

  • 第5题:

    有如下函数模板的定义:template Tfunc(Tx,Ty){returnx*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,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题:

    有如下的类的模板定义: template class MyClass { private:T number; public:MyClass(

    有如下的类的模板定义:

    template <class T>

    class MyClass

    {

    private:

    T number;

    public:

    MyClass(T k);

    };

    其中构造函数MyClass()用k的值初始化数据成员n。因此在模板类体外,构造函数

    MyClass应定义为【 】。


    正确答案:templateclassT>/MyClassT>::MyClass(T k):number(k){}
    templateclassT>/MyClassT>::MyClass(T k):number(k){} 解析:类模板的成员函数的类体外的定义以“templateclass T>”开头。

  • 第7题:

    下列对模板的声明,正确的是()。A.templateB.templateC.template

    下列对模板的声明,正确的是( )。

    A.template<T>

    B.template<class T1,T2>

    C.template<class T1,class T2>

    D.template<class T1;class T2>


    正确答案:C

  • 第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题:

    下列对模板的声明中,正确的是A.templateB.templateC.template

    下列对模板的声明中,正确的是

    A.template<T>

    B.template<class T1,T2>

    C.template<classT1,class T2>

    D.template<classT1;class T2>


    正确答案:C
    解析:本题考核模板的定义。模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

  • 第10题:

    有如下函数模板声明: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
    解析:使用模板,应避免二义性

  • 第11题:

    下面的函数模板定义中错误的是______ 。A.template QF (Q x){return Q +x;}B.template<

    下面的函数模板定义中错误的是______ 。

    A.template<class Q > QF (Q x){return Q +x;}

    B.template<class Q > QF (Q x){returnx/x;}

    C.template <class T > T F(T x) {return x*x;}

    D.template <class T> bool F (T x) {return x>1;}


    正确答案:A
    解析:Q只是模板的语法要求,不能作为一个值。

  • 第12题:

    假设有函数模板定义如下:template< typename T >Max(T a,T b,T&c){c=a+b;}下列选项正确的是()

    • A、)int x,y;char z;Max(x,y,z);
    • B、)double x,y,z;Max(x,y,z);
    • C、)int x,y;float z;Max(x,y,z);
    • D、)float x;double y,z;Max(x,y,z);

    正确答案:B

  • 第13题:

    下列函数模板的定义中,合法的是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。

  • 第14题:

    下列对模板的声明中,正确的是A.templateB.templateC.template

    下列对模板的声明中,正确的是

    A.template<T>

    B.template<class T1,T2>

    C.template<class T1,class T2>

    D.tamplate<class T1;class T2>


    正确答案:C
    解析:本题考核模板的定义。模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

  • 第15题:

    下列对模板的声明中正确的是()。A.templateB.templateC.template

    下列对模板的声明中正确的是( )。

    A.template<T>

    B.template<class T1,T2>

    C.template<classT1,class T2>

    D.template<class T1;class T2>


    正确答案:C

  • 第16题:

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

  • 第17题:

    下面不属于同一函数模板的是()。A.template t1 max(t1 &a,t1 &b) {…}template<

    下面不属于同一函数模板的是( )。

    A.template<class t1> t1 max(t1 &a,t1 &b) {…}template<class t2> t2 max(t2 &a,t2 &b) {…}

    B.template<class t1>t1 max(t1 a,t1 b){…}template<class t2>t2 max(t2 &a,t2 &b){…}

    C.template<class t1> t1 max(t1 * a,t1 * b) {…} template<class t2> t2 max(t2 &a,t2 &b) {…}

    D.template<class t1>t1 max(t1 a,t1 b){…}template<class t2>t2 max(t2 &a,t2 &b,t2 c){…}


    正确答案:D
    解析:函数模板的重载是靠模板参数的数量不同来区分的,因为函数模板是抽象的,有待于进一步实例化,所以靠参数类型无法区别调用哪个函数模板。

  • 第18题:

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

  • 第19题:

    下列的模板说明中,正确的是( )。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
    解析:模板说明,要求每个参数前都有一个类型参数,多个参数需用逗号隔开。

  • 第20题:

    下列对模板的声明中正确的是A.templateB.templateC.template

    下列对模板的声明中正确的是

    A.template<T>

    B.template<class T1,T2>

    C.template<class T1,class T2>

    D.template<class T1;class T2>


    正确答案:C
    解析:本题考核模板的定义。模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

  • 第21题:

    有如下模板声明: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没有类型参数限制定义,所以和题干给出的定义不同。

  • 第22题:

    下列关于函数模板的定义中,合法的是()。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,函数的声明部分和一般函数的声明部分类似,只有某些类型修饰符被虚拟类型参数替代。

  • 第23题:

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