更多“类模板能够声明什么形式的友员?当类模板的友员是函数模板时,它们可”相关问题
  • 第1题:

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

    A、类模板的成员函数可以是函数模板

    B、类模板生成模板类时,必须指定参数化的类型所代表的具体类型

    C、定义类模板时只允许有一个模板参数

    D、类模板所描述的是一组类


    参考答案:C

  • 第2题:

    关于类模板,下列表述不正确的是

    A.用类模板定义一个对象时,不能省略实参

    B.类模板只能有虚拟类型参数

    C.类模板本身在编译中不会生成任何代码

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


    正确答案:B
    解析:本题考核类模板的概念。类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)。C++中可以为类模板的参数设置默认值,所以B) 选项是不正确的,其他选项的表述都是正确的。

  • 第3题:

    类模板template<classT>classX{…},其中友元函数f对特定类型T(如int),使函数f(x<int>)成为x<int>模板类的友元,则其说明为( )。

    A.friendvoidf();

    B.friendvoidf(x<T>);

    C.friendvoidA::f();

    D.friendvoidC<T>::f(x<T>);


    正确答案:B
    B。【解析】声明一个函数模板的格式template<模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。

  • 第4题:

    下面是一个模板声明的开始部分: Templatedouble... 由此可知A.这可能是一个函

    下面是一个模板声明的开始部分: Template<typename T>double... 由此可知

    A.这可能是一个函数模板的声明

    B.这可能是一个类模板的声明

    C.这既可能是一个函数模板的声明,也可能是一个类模板的声明

    D.这肯定是一个错误的模板声明


    正确答案:A
    解析:类模板说明的一般形式是:
      template类型形参表>
      class类名>
      {//类说明体??
      };
      函数模板的一般说明形式如下
      template模板形参表>
      返回值类型>函数名>(模板函数形参表)
      //函数定义体

  • 第5题:

    类模板templateclass x(…),其中,友元函数f成为从该类模板实例化的每个模板类的友元,则

    类模板template<class T>class x(…),其中,友元函数f成为从该类模板实例化的每个模板类的友元,则其说明应为( )。

    A.friend void f();

    B.friend void f(x<T>&)

    C.friend void A::f();

    D.friend void C<T>::f(x<T>&):


    正确答案:A

  • 第6题:

    下面关于函数模板的表述中不正确的是( )。

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

    B)类模板本身在编译过程中不会产生任何代码

    C)类模板只能有虚拟类型的参数

    D)用类模板定义一个对象时,实参不能省略


    正确答案:C

  • 第7题:

    建立类模板对象的实例化过程为()

    • A、基类→派生类
    • B、构造函数→对象
    • C、模板类→对象
    • D、模板类→模板函数

    正确答案:C

  • 第8题:

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

    如果一个类中存在纯虚函数,这个类就是类模板

    B

    函数模板不能有形式参数表

    C

    类模板是一种参数化类型的类,是类的生成器

    D

    类模板中不能包含构造函数


    正确答案: C
    解析:
    A项偷换概念,如果一个类中存在纯虚函数,这个类就是抽象类;B项,声明一个函数模板的格式是:template<<模板形参表>><函数声明>,函数模板由形式参数表;C项,对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函数;对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器;D项,类模板中可以包含构造函数。

  • 第9题:

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

    调用模板函数时,有时可以省略模板实参

    B

    函数模板的每个实例就是一个函数定义

    C

    类模板的每个实例就是一个类定义

    D

    类模板的实例是一个类对象


    正确答案: C
    解析:
    在定义对象的过程中,编译系统会自动地根据需要生成相应的类定义,这种依据类模板生成类定义的过程称为类模板的实例化。类模板实例化所生成的每一个类定义就是相应类模板的一个实例。

  • 第10题:

    单选题
    下面关于函数模板的表述中不正确的是(  )。
    A

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

    B

    类模板本身在编译过程中不会产生任何代码

    C

    类模板只能有虚拟类型的参数

    D

    用类模板定义一个对象时,实参不能省略


    正确答案: D
    解析:
    类模板本身在编译时是不会产生代码的,只有在其实例
    化以后才产生代码。定义一个对象时,不能省略其实参。

  • 第11题:

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

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

    B

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

    C

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

    D

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


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

  • 第12题:

    单选题
    建立类模板对象的实例化过程为()
    A

    基类→派生类

    B

    构造函数→对象

    C

    模板类→对象

    D

    模板类→模板函数


    正确答案: C
    解析: 暂无解析

  • 第13题:

    类模板templateclass x{...},其中,友元函数f对特定类型T(如int),使函数 f(x);成为

    类模板template<class T>class x{...},其中,友元函数f对特定类型T(如int),使函数 f(x<int>);成为x<int>模板类的友元,则其说明为( )。

    A.friend void f();

    B.friend void f(x<T>);

    C.friend void A:: f()

    D.friend void C<D:: f(x<T>);


    正确答案:B

  • 第14题:

    C++模板包括( )。

    A.类模板和函数模板

    B.模板类和模板函数

    C.类和函数

    D.对象和函数


    正确答案:A
    解析:C++模板包括类模板和函数模板。

  • 第15题:

    类模板templateclass x{…},其中友元函数f对特定类型T(如int),使函数f(x)成为x

    类模板template<class T>class x{…},其中友元函数f对特定类型T(如int),使函数f(x<int>)成为x<int>模板类的友元,则其说明为( )。

    A.friend voidf();

    B.friend voidf(x<T>);

    C.friend voidA::f();

    D.friend void C<T>::f(x<T>);


    正确答案:B
    解析: 声明一个函数模板的格式:template模板形参表声明>函数声明。调用模板函数时,如果与模板实参中最后的若干个参数有关的信息可以从模板函数的实参中获得,则相关的模板实参可以省略。

  • 第16题:

    下面是一个模板声明的开始部分: template<typename T>double…由此可知( )。

    A.这可能是一个函数模板的声明

    B.这可能是一个类模板的声明

    C.这既可能是一个函数模板的声明,也可能是一个类模板的声明

    D.这肯定是一个错误的模板声明


    正确答案:A
    本题考查函数模板和类模板的基础知识,从template<typenameT>double这里就可以看出这是·个函数模板的声明。

  • 第17题:

    下面是一个模板声明的开始部分: templatedouble…由此可知( )。

    A.这可能是一个函数模板的声明

    B.这可能是一个类模板的声明

    C.这既可能是一个函数模板的声明,也可能是一个类模板的声明

    D.这肯定是一个错误的模板声明


    正确答案:A
    本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是·个函数模板的声明。

  • 第18题:

    关于函数模板,描述错误的是()

    • A、函数模板必须由程序员实例化为可执行的函数模板
    • B、函数模板的实例化由编译器实现
    • C、一个类定义中,只要有一个函数模板,这个类就是类模板
    • D、类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

    正确答案:A

  • 第19题:

    关于类模板,描述错误的是()

    • A、一个普通基类不能派生类模板
    • B、类模板可以从普通类派生,也可以从类模板派生
    • C、根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
    • D、函数的类模板参数需生成模板类并通过构造函数实例化

    正确答案:A

  • 第20题:

    单选题
    下列有关模板的叙述中,正确的是(  )。
    A

    函数模板不能含有常规形参

    B

    函数模板的一个实例就是一个函数定义

    C

    类模板的成员函数不能是模板函数

    D

    用类模板定义对象时,绝对不能省略模板实参


    正确答案: D
    解析:
    A项错误,函数模板可以含有常规形参;B项正确,函数模板的一个实例就是一个函数定义;C项错误,类模板中的成员函数都是模板函数;D项错误,在用类模扳定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。

  • 第21题:

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

    函数模板必须由程序员实例化为可执行的函数模板

    B

    函数模板的实例化由编译器实现

    C

    一个类定义中,只要有一个函数模板,这个类就是类模板

    D

    类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化


    正确答案: C
    解析: 暂无解析

  • 第22题:

    单选题
    C++中的模板包括(  )。
    A

    对象模板和函数模板

    B

    对象模板和类模板

    C

    函数模板和类模板

    D

    变量模板和对象模板


    正确答案: A
    解析:
    在C++语言中,模板包括函数模板和类模板。

  • 第23题:

    单选题
    关于类模板,描述错误的是()
    A

    一个普通基类不能派生类模板

    B

    类模板可以从普通类派生,也可以从类模板派生

    C

    根据建立对象时的实际数据类型,编译器把类模板实例化为模板类

    D

    函数的类模板参数需生成模板类并通过构造函数实例化


    正确答案: A
    解析: 暂无解析