第9章习题答案(共10页).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第9章习题答案(共10页).docx》由会员分享,可在线阅读,更多相关《第9章习题答案(共10页).docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第九章 模板1 选择题(1)关于函数模板,描述错误的是( A )。(A) 函数模板必须由程序员实例化为可执行的函数模板(B) 函数模板的实例化由编译器实现(C) 一个类定义中,只要有一个函数模板,则这个类是类模板(D) 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化(2)下列的模板说明中,正确的是( c )。(A) template (B) template (C) template (D) template ( typedef T1, typedef T2 )(3)假设有函数模板定义如下: template Max( T a, T b ,T &c
2、) c= a + b ; 下列选项正确的是( B )。(A) int x, y; char z ;(B) double x, y, z ; Max( x, y, z ) ; Max( x, y, z ) ;(C) int x, y; float z ;(D) float x; double y, z ;Max( x, y, z ); Max( x, y, z ) ;(4)关于类模板,描述错误的是( A )。(A) 一个普通基类不能派生类模板(B) 类模板可以从普通类派生,也可以从类模板派生(C) 根据建立对象时的实际数据类型,编译器把类模板实例化为模板类(D) 函数的类模板参数需生成模板类并通
3、过构造函数实例化(5)类模板的使用实际上是将类模板实例化成一个(C)。A函数 B对象 C类 D抽象类(6)类模板的模板参数(D)。 A只能作为数据成员的类型 B只可作为成员函数的返回类型C只可作为成员函数的参数类型 D以上三种均可(7)类模板的实例化(A)。 A在编译时进行 B属于动态联编C在运行时进行 D在连接时进行(8)以下类模板定义正确的为(A)。Atemplate BtemplateCtemplate Dtemplate2 阅读下列程序,写出执行结果(1) #include using namespace std;template void fun( T &x, T &y ) T te
4、mp; temp = x; x = y; y = temp;int 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;【解答】i=20 j=10a=2.2 b=1.1(2)#include using namespace std;template class Base public: Base( T i , T j ) x = i; y = j; T sum() r
5、eturn x + y; private: T x , y; ;int main() Base obj2(3.3,5.5); cout obj2.sum() endl; Base obj1(3,5); cout obj1.sum() endl;【解答】8.883抽象类和类模板都是提供抽象的机制,请分析它们的区别和应用场合。【解答】抽象类至少包含一个纯虚函数,纯虚函数抽象了类体系中一些类似操作的公共界面,它不依赖于数据,也没有操作定义。派生类必须定义实现版本。抽象类用于程序开发时对功能的统一策划,利用程序运行的多态性自动匹配实行不同版本的函数。类模板抽象了数据类型,称为类属参数。成员函数描述了类
6、型不同,逻辑操作相同的功能集。编译器用建立对象的数据类型参数实例化为模板类,生成可运行的实体。类模板用于抽象数据对象类型不同,逻辑操作完全相同类定义。这种数据类型的推导必须在语言功能的范畴之内的。4类模板能够声明什么形式的友员?当类模板的友员是函数模板时,它们可以定义不同形式的类属参数吗?请你写个验证程序试一试。【解答】类模板可以声明的友员形式有:普通函数、函数模板、普通类成员函数、类模板成员函数以及普通类、类模板。当类模板的友员是函数模板时,它们可以定义不同形式的类属参数。程序略。5类模板的静态数据成员可以是抽象类型吗?它们的存储空间是什么时候建立的?请你用验证程序试一试。【解答】类模板的静
7、态数据成员可以是抽象类型。它们的存储空间在生成具体模板类的时候建立,即每生成一个模板类同时建立静态储存空间并做一次文件范围的初始化。程序略。6设计一个函数模板,其中包括数据成员T an以及对其进行排序的成员函数 sort( ),模板参数T可实例化成字符串。【解答】#include #include using namespace std;templatevoid Sort(T* a,int n)int i,j;T t;for(i=0;in-1;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; templatevoid Print(T* a,int n)int
8、i;for(i=0;in;i+)coutai ;coutendl;int main()string Str10=Zhang,Li,Wang,Qian,Zhao,Wu,Xu,Tang,Shen,Liang;int Int8=20,12,0,-5,9,-18,6,11;double Dou7=3.07,8.12,-0.45,6,10,-9,7.29;Sort(Str,10);Sort(Int,8);Sort(Dou,7);Print(Str,10);Print(Int,8);Print(Dou,7);return 0;7设计一个类模板,其中包括数据成员T an以及在其中进行查找数据元素的函数int
9、 search(T)模板参数 T可实例化成字符串。【解答】#include using namespace std; templateclass A int size; T* element;public: A(); A(); int Search(T); void SetElement(int index,const T& value);templateA:A()size=n1? n:1; element=new Tsize;templateA:A() delete element;templateint A:Search(T t)int i;for(i=0;isize;i+)if(elem
10、enti=t)return i;return -1;templatevoid A:SetElement(int index,const T& value) elementindex=value;int main()A intAry;/用int实例化,建立模板类对象A douAry;/用double实例化,建立模板类对象int i;for(i=0;i5;i+) intAry.SetElement(i,i+3);for(i=0;i=0)couti=0)coutiendl;return 0;8设计一个单向链表类模板,结点数据域中数据从小到大排列,并设计插入、删除节点的成员函数。【解答】#includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 答案 10
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内