单选题下列关于模板的叙述中,错误的是(  )。A 调用模板函数时,在一定条件下可以省略模板实参B 可以用int、double这样的类型修饰符来声明模板参数C 模板声明中的关键字class都可以用关键字typename替代D 模板的形参表中可以有多个参数

题目
单选题
下列关于模板的叙述中,错误的是(  )。
A

调用模板函数时,在一定条件下可以省略模板实参

B

可以用int、double这样的类型修饰符来声明模板参数

C

模板声明中的关键字class都可以用关键字typename替代

D

模板的形参表中可以有多个参数


相似考题
更多“单选题下列关于模板的叙述中,错误的是(  )。A 调用模板函数时,在一定条件下可以省略模板实参B 可以用int、double这样的类型修饰符来声明模板参数C 模板声明中的关键字class都可以用关键字typename替代D 模板的形参表中可以有多个参数”相关问题
  • 第1题:

    关于在调用模板函数时模板实参的使用,下列表述正确的是

    A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

    B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

    C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

    D.对于常规参数所对应的模板实参,任何情况下都不能省略


    正确答案:D
    解析:本题考查的是模板实参的省略。模板实参在以下几种情况中不能省略:
      ①从模板函数实参表获得的信息有矛盾:
      ②需要获得特定类型的返回值,而不管参数的类型如何;
      ③虚拟类型参数没有出现在模板函数的形参表中;
      ④函数模板含有常规形参。
      故本题的正确答案是选项D。

  • 第2题:

    ( 25 )下列关于类模板的模板参数的叙述中,错误的是

    A )模板参数可以作为数据成员的类型

    B )模板参数可以作为成员函数的返回类型

    C )模板参数可以作为成员函数的参数类型

    D )模板参数不能作为成员函数的局部变量的类型


    正确答案:D

  • 第3题:

    ( 15 )下列关于模板形参的描述中,错误的是

    A )模板形参表必须在关键字 template 之后

    B )模板形参表必须用括弧 ( ) 括起来

    C )可以用 class 修饰模板形参

    D )可以用 typename 修饰模板形参


    正确答案:B

  • 第4题:

    下列关于模板形参的描述中,错误的是

    A.模板形参表必须在关键字template之后

    B.模板形参表必须用括弧()括起来

    C.可以用class修饰模板形参

    D.可以用typename修饰模板形参


    正确答案:B
    解析:模板参数位于函数模板名称的前面,在一对尖括号内部进行声明,如:template<typename T>//T是模板参数在函数模板内部,不能指定缺省的模板实参。根据以上定义可知选项B)是错误的。

  • 第5题:

    下列关于函数模板的描述中,错误的是

    A.从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

    B.对于常规参数所对应的模板实参,任何情况下都不能省略

    C.虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

    D.模板参数表不能为空


    正确答案:D
    解析:模板实参的省略在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表或从模板函数实参表,模板实参的信息优先于函数实参的信息。因此,A)选项是正确的。下面列举几种模板实参不能省略的情况。①从模板函数实参表获得的信息矛盾。②需要获得特定类型的返回值,而不管参数的类型如何。③虚拟类型参数没有出现在模板函数的形参表中。④函数模板含有常规形参。由3和4可以看出选项B)、c)是正确的,因此选D)。如果模板实参表中的实参都被省略了,则连空表也可以不要,也就是说模板参数表可以为空。

  • 第6题:

    下列关于模板的叙述中,错误的是______ 。

    A.模板声明中的第一个符号总是关键字template

    B.在模板声明中用<和>,括起来的部分是模板的形参表

    C.类模板不能有数据成员

    D.在一定条件下函数棋板的实参可以省略


    正确答案:C
    解析:类模板可以有自己的数据成员,例如templateclassT>。

  • 第7题:

    关于在调用模板函数时实参的使用,下列表述中正确的是

    A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

    B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

    C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

    D.对于常规参数所对应的模板实参,任何情况下都不能省略


    正确答案:D
    解析:模板函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板实参表(用和>括起来的参数表)或从模板函数实参表(用()括起来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干个参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表>也可以不要。反之,对于某个模板实参,如果从模板函数的实参表中无法获得同样的信息,就不能省略;或者虽然能够获得同样的信息,但在它后面还有其他不能省略的实参,则其自身还是不能省略.由此可知只有D) 选项的说法是正确的。

  • 第8题:

    关于调用模板函数时模板实参的使用,下列表述中正确的是( )。

    A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

    B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

    C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

    D.对于常规参数所对应的模板实参,任何情况下都不能省略


    正确答案:D
    解析: 以下情况模板实参不能省略:从模板函数实参表获得的信息有矛盾:需要获得特定类型的返回值,而不管返回值类型如何:虚拟类型的参数没有出现在模板形参表中;函数模板含有常规形参。

  • 第9题:

    下列关于函数模板实参不能省略的情况说明不正确的是( )

    A.从模板函数实参表获得的信息有矛盾
    B.需要获得特定类型的返回值,而不管参数的类型如何
    C.虚拟类型参数没有出现在模板函数的形参表中
    D.函数模板不含有常规形参

    答案:D
    解析:

  • 第10题:

    单选题
    关于关键字class和typename,下列表述中正确的是(  )。
    A

    程序中的typename都可以替换为class

    B

    程序中的class都可以替换为typename

    C

    在模板形参表中只能用typename来声明参数的类型

    D

    在模板形参表中只能用class或typename来声明参数的类型


    正确答案: B
    解析:
    关键字class除了能用来定义类以外还能用来声明模板的虚拟类型参数,在用作声明虚拟类型参数时typename与class可以互换,但不能使用typename来定义类,因此程序中的typename都可以替换为class,而定义类的地方只能用class,不能用typename。在模板形参表中除了可以用typename和class声明虚拟类型参数外,还可以使用普通类型声明常规函数。

  • 第11题:

    单选题
    下列关于模板的叙述中,错误的是(  )。
    A

    模板声明中的第一个符号总是关键字template

    B

    在模板声明中用<和>括起来的部分是模板的形参表

    C

    类模板不能有数据成员

    D

    在一定条件下函数模板的实参可以省略


    正确答案: A
    解析:
    AB两项正确,模板的一般说明形式如下:template<<模板形参表>><函数声明>;C项错误,类模板可以有数据成员和成员函数;D项正确,函数模板的实参在一定条件下是可以省略的。

  • 第12题:

    单选题
    下列关于模板的叙述中,错误的是(  )。
    A

    调用模板函数时,在一定条件下可以省略模板实参

    B

    可以用int、double这样的类型修饰符来声明模板参数

    C

    模板声明中的关键字class都可以用关键字typename替代

    D

    模板的形参表中可以有多个参数


    正确答案: A
    解析:
    在声明函数模板时,关键字typename和class可以互换,两者是等价的;但在类模板声明中,替换可能会引起麻烦。

  • 第13题:

    下列关于模板的叙述中,错误的是( )。

    A.调用模板函数时,在一定条件下可以省略模板实参

    B.可以用int、double这样的类型修饰符来声明模板参数

    C.模板声明中的关键字class都可以用关键字typename替代

    D.模板的形参表中可以有多个参数


    正确答案:C
    解析:此题考查的是模板的概念。模板的一般说明形式如下: template类型形参表函数返回值类型函数名(形参表){函数体}。其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开)。参数在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。关键字class除了能用来定义类以外,还能用来声明模板的虚拟类型参数,在用作声明虚拟类型参数时,typename与class可以互换,但不能使用typename来定义类;在模板形参表中除了可以用typename和class声明虚拟类型参数外,还可以使用普通类型声明常规函数。

  • 第14题:

    ( 15 )下列关于函数模板的描述中,错误的是

    A )从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

    B )对于常规参数所对应的模板实参,任何情况下都不能省略

    C )虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

    D )模板参数表不能为空


    正确答案:B

  • 第15题:

    下列关于模板的叙述中,错误的是

    A.模板声明中的第一个符号总是关键字templale

    B.在模板声明中用<和>括起来的部分是模板的形参表

    C.类模板不能有数据成员

    D.在一定条件下函数模板的实参可以省略


    正确答案:C
    解析:C++中有两类模板:类模板和函数模板。类模板中可以有数据成员,所以选项C)错误。

  • 第16题:

    下列关于模板形参的描述中,错误的是

    A.模板形参表必须在关键字template之后

    B.模板形参表必须用小括号()括起来

    C.模板形参表必须用小括号()括起来

    D.可以用typename修饰模板形参


    正确答案:B
    解析:对函数模板,模板的一般格式为:
      templatetyname类型参数>函数类型函数名(形参){函数体}
      对类模板,一般格式为:
      templateclass类型参数>class类名{……},类型参数是用一对>括起来。

  • 第17题:

    关于关键字class和typename,下列表述中正确的是( )。 A. 程序中的typename都可以替换为classS

    关于关键字class和typename,下列表述中正确的是( )。

    A. 程序中的typename都可以替换为class

    B.程序中的class都可以替换为typename

    C.在模板形参表中只能用{ypename来声明参数的类型

    D.在模板形参表中只能用class或typenanle来声明参数的类型


    正确答案:A
    程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。

  • 第18题:

    下列叙述正确的是( )。

    A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

    B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

    C.对于常规参数所对应的模板实参,任何情况下都不能省略

    D.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略


    正确答案:C
    解析:本题考核函数模板的使用。函数的实参可以省略,但模板实参的省略并不是必然的,而是有条件的。

  • 第19题:

    下列关于模板的描述中,错误的是( )。

    A.类模板的成员函数都是模板函数

    B.函数模板是一种参数化类型的函数

    C.满足一定条件时可以省略模板实参

    D.模板形参只能由关键字typename声明


    正确答案:D
    D。【解析】template<typename(或class)数据类型参数标识符>。

  • 第20题:

    下列关于模板形参的描述中,错误的是

    A.模板形参表必须在关键字template之后

    B.模板形参表必须在关键字template之后

    C.可以用class修饰模板形参

    D.可以用typename修饰模板形参


    正确答案:B
    解析:对函数模板,模板的一般格式为:
      templatetyname类型参数>函数类型函数名(形参){函数体}
      对类模板,一般格式为:
      templateclass类型参数>class类名{……},类型参数是用一对>括起来。

  • 第21题:

    单选题
    下列关于函数模板的描述中,错误的是(  )。
    A

    从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准

    B

    对于常规参数所对应的模板实参,任何情况下都不能省略

    C

    虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参

    D

    模板参数表不能为空


    正确答案: C
    解析:
    在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略,因此模板参数表可以为空。

  • 第22题:

    单选题
    下列关于模板的描述中,错误的是(  )。
    A

    类模板的成员函数都是模板函数

    B

    函数模板是一种参数化类型的函数

    C

    满足一定条件时可以省略模板实参

    D

    模板形参只能由关键字typename声明


    正确答案: A
    解析:
    同一模板的声明和定义中,模板形参的名字不必相同。每个模板类型形参前面必须带上关键字typename/class,每个非模板类型形参前面必须带上类型名字。

  • 第23题:

    单选题
    下列关于模板形参的描述中,错误的是(  )。
    A

    模板形参表必须在关键字template之后

    B

    模板形参表必须用括弧( )括起来

    C

    可以用class修饰模板形参

    D

    可以用typename修饰模板形参


    正确答案: A
    解析:
    声明一个函数模板的格式是:template<<模板形参表>><函数声明>,其中的<模板形参表>是由一个或多个<模板形参>组成,每个<模板形参>具有下面的几种形式:typename<参数表>;class<参数名>;<类型修饰><参数名>。由此可知,模板形参表必须用< >括起来,而不是( )。

  • 第24题:

    单选题
    关于在调用模板函数时模板实参的使用,下列表述正确的是(  )。
    A

    对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略

    B

    对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略

    C

    对于虚拟类型参数所对应的模板实参,若能够省略则必须省略

    D

    对于常规参数所对应的模板实参,任何情况下都不能省略


    正确答案: B
    解析:
    模板实参在以下几种情况中不能省略:①与从模板函数实参表获得的信息有矛盾;②需要获得特定类型的返回值,而不管参数的类型如何;③虚拟类型参数没有出现在模板函数的形参表中;④函数模板含有常规形参。