第7章模板
7.1知识要点
1.1.掌握函数模板的概念和定义;
2.2.掌握类模板的概念和定义;
3.3.掌握函数模板和类模板的使用
7.2补充习题
1. 1.关于函数模板,描述错误的是().
(a)(a)函数模板必须由程序员实例化为可执行的函数模板
(b)(b)函数模板的实例化由编译器实现
(c)(c)一个类定义中,中要有一个函数模板,则这个类是类模板
(d)(d)类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
2.下列的模板说明中,正确的是().
(a)(a)template <typename T1, typename T2>
(b)(b)template <class T1,T2>
(c)(c)template <class T1,T2>
(d)(d)template <typename T1,T2>
3.假设有函数模板定义如下:
template <typename T>
Max (T a, T b, T &c)
{c= a +b;}
下列选项正确的是().
(a)(a)float x, y; float z; Max(x, y, z);
(b)(b)int x, y, z; Max(x,y,z);
(c)(c)int x,y; float z; Max(x,y,z)
(d)(d)float x; double y,z; Max(x,y,z);
4.关于类模板,描述错误的是().
(a)(a)一个普通基类不能派生类模板
(b)(b)类模板从普通类派生,也可以类模板派生
(c)(c)根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
(d)(d)函数的类模板参数须通过构造函数实例化
5.建立类模板对象的实例化过程为().
(a)(a)基类->派生类
(b)(b)构造函数->对象
(c)(c)模板类->对象
(d)(d)模板类->模板对象
6.在C++中,容器是一种().
(a)(a)标准类
(b)(b)标准对象
(c)(c)标准函数
(d)(d)标准类模板
7.阅读下列程序,写出程序执行结果
(1)#include<iostream.h>
template<typename T>
void Fun(T &x, T &y)
{ T temp;
temp =x; x=y; y=temp;}
void main()
{
int I, j ;
I=10;j=20;
Fun(I,j);
Cout<<”I=”<<I<<’\ t’<<”j=”<<j<<endl;
Double A, b;
A=1.1;b=2.2;
Fun(A,b);
Cout<<”A=”<<A<<’\t’<<”b=”<<b<<endl;
}
(2)# include<iostream.h>
template <typename T>
class base
{public :
base ( T I, T J ){x=I;y=J;}
T sum(){return x+y;}
Private:
T x, y;
};
void main()
{base <double> obj2 (3.3,5.5)l
cout<<obj2.sum()<<endl;
base <int> obj1(3,5);
cout<<obj1.sum()<<endl;
8,编程题
(1),使用函数模板实现对不同类型数组求平均值的功能,并在函数main()中分别求一个整型数组和一个单精度浮点型数组的平均值.
(2).建立结点包括一个任意类型数据域和一个指针域的单向链表类模板.在函数main()中使用该类模板建立数据域为整型的单向链表,并把链表中的数据显示出来.
(3).学习使用STL编程.选择合适的组件,建立职工信息链表,并完成题中要求的各种操作.。