第七章 模板:模板是C++语言进行通用程序设计的工具之一。代码重用是程序设计的重要特性,为实现代码重用,使代码具有更好的通用性,需要使用代码不受数据类型的限制,自动适应不同的数据类型,实现参数的化程序设计。由于有大量标准数据结构用于容纳数据,人们自然就想到了为这些数据结构提供标准的、可移植的标准模板库STL。该库包含了许多在计算机科学领域里常用的基本数据结构和基本算法,为编写程序提供了可扩展的应用框架。   本章我们重点介绍函数模板和类模板的相关知识,对于模板库STL,我们介绍了主要的组件,包括迭代器、容器、函数对象和算法的基本应用。因篇幅所限,不涉及STL的方方面面。7.1函数模板的定义和实例化:函数模板的概念;函数模板的定义方法;函数模板的实例化
7.2函数模板举例:函数模板举例
7.3类模板的定义和使用:类模板的定义方法;类模板的实例化;类模板的使用
7.4类模板的参数:类模板的非类型参数;类模板的默认参数
7.5类模板与派生:类模板的派生的四种情况
7.6类模板与友元:普通函数作为类模板的友元;函数模板作为类模板的友元; 类模板作为类模板的友元
7.7类模板与静态成员:类的静态成员;类模板的静态成员
7.8标准模板库STL概述:标准模板库STL中的四种组件
7.9顺序容器之vector和deque:顺序容器的简介,vector、deque容器的基本操作。
7.10顺序容器之list:list的基本操作
[单选题]顺序容器(vector, list, deque)中,能通过pop_front()删除最前面的元素的是(    )。

选项:[vector, deque

, list, deque

, vector, list

, vector, list, deque

]
[单选题]下面vector容器的定义不正确的是(    

选项:[vector<char> v;

, vector<double> v;    

, vector v; 

, vector <int> v(10);   

]
[单选题]类模板templateclass X{  },其中,函数模板f定义为该类模板实例化的每个模板类的友元,则其说明应为(    )。

选项:[friend void f()

,

template <class T> 

friend void X::f(x&)

, friend void  X::f()

,

template <class T> 

friend void f(X&);

]
[判断题]函数模板中可以有不止一个类型参数,每一个类型参数前面都要加typenameclass来说明。(    

选项:[对, 错]
[判断题]把通过函数模板按实际类型生成的函数称为模板函数,这个过程称为实例化。编译程序实例化后的模板函数自动生成目标代码。(    

选项:[错, 对]
[判断题]函数模板实例化时,没有普通传值参数的类型转换机制。(    

选项:[错, 对]
[单选题]建立类模板对象的实例化过程为(    )。

选项:[类模板—对象

, 类模板—模板类—对象

, 基类—派生类

, 模板类—模板函数

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

选项:[函数模板的实例化由编译器实现

, 用关键字template引出对类型参数名的声明

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

, 函数模板不是函数,它需要以具体的类型为实参才能生成函数

]
[单选题]假设有函数模板定义如下:
template
int Min( T *a, int size )
{
T temp=a[0];
int j=0;
for(int i=1;iif(a[i]temp=a[i];
j=i;
}
return j+1;
}
假设ArrayX已定义为float型的数组,则求该数组前10个元素中最小元素的位置的语句为( )。
选项:[Min(ArrayX,size);, Min(ArrayX);, Min(ArrayX,int) ;, Min(ArrayX,10) ;]
[单选题]假设有模板定义如下:
template
T Min(T m1, T m2 ){
return (m1}
下面哪个模板的不是上面模板的重载?( )
选项:[template
float Min(T m1, T m2 ){
return (m1}
, template
T1 Min(T1 a[ ], T2 n ){
T1 minnum=a[0] ;
for (int i=0 ;iif(minnum>a[i]) minnum=a[i];
return minnum;
}
, template
T Min(T m1, T m2, T m3 ){
T temp=Min(m1,m2) ;
return Min(temp , m3) ;
}
, template
T1 Min(T1 m1, T2 m2 ){
return (m1}
]
[判断题]编译器会选择实参经过自动类型转换后能够匹配的模板函数进行匹配。(    

选项:[错, 对]
[单选题]下面是类模板的定义语句

template <class T1=char,class T2=double,class T3=float,int N=100>

class ClassX{   };

x,y,z分别是char、double、float类型的变量,则下面定义对象的语句哪一个是错误的?( )

选项:[ClassX<x,y> obj; 

, ClassX obj; 

, ClassX<> obj;  

, ClassX<x,y,z,10> obj;

]
[多选题]以下类模板、模板类、普通类之间的派生方式正确的是(    

选项:[从类模板派生出新的类模板

, 从普通类派生出类模板

, 从模板类派生出普通类

, 从模板类派生出类模板

]
[单选题]下面定义类模板模板参数的定义语句错误的是(    )。

选项:[

template <class T1,class T2=double,class T3,int N=100>  

,

template <class T1,class T2,class T3=double,int N=100> 

,

template <class T1,class T2=double,class T3=float,int N=100>

,

template <class T1,class T2,class T3,int N>

]
[单选题]

类模板Array的模板参数定义如下:

template <typename T,int n>

则下面哪个对象的定义是错误的?(     )

选项:[Array a; 

, Array< double,10 > a;

, Array <int ,10> a;   

, Array<char,10> a(10);

]

温馨提示支付 ¥1.00 元后可查看付费内容,请先翻页预览!
点赞(0) dxwkbang
返回
顶部