- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章作业内容修改后带部分答案)
选择题
1. 下列关于类模板中模板参数的叙述中,错误的是(D)
A.模板参数可以作为数据成员的类型
B.模板参数可以作为成员函数的返回类型
C.模板参数可以作为成员函数的参数类型
D.模板参数不能作为成员函数的局部变量类型
2. 假设定义如下函数模板:
templateclass T
T max(T x,T y)
{return(xy)?x:y;}
并定义了int i=3;char c=‘a’;语句,正确的调用语句是:(D)
A.max(“li”, ”Zhang”);
B. max(int(i), c);
C. max(i, c);
D. maxint(c, i);
3. 下列程序段中有错的是(B)
template class type1, typename type2 //A
int i; // B
myfunc(type1 x,type2 y) //C
{ coutx yendl;} //D
4.下列关于类模板的说法中,正确的是(B)
A. 在类模板外定义成员函数时,其成员函数和普通类成员函数的定义是一样的
B. 在类模板外定义成员函数时,其成员函数前面必须包含模板参数的声明
C. 类模板只能声明一个参数
D. 类模板和函数模板一样,它的参数不可以具有默认值
5.(选作题)下列不是顺序容器的是(D)
A. vector B. list C .deque D. map
6.(选作题)有如下定义:int ia[7]={0,1,1,2,3,5,8};,下面(D)是错误的
A. vectorvectorintivec;
B. vectorintivec={0,1,1,2,3,5,8};
C. vectorintivec(ia,ia+7);
D. vectorstringsvec=ivec;
7.一个(C )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能去任意类型。
A.函数模板 B.模板函数 C. 类模板 D.模板类
二. 问答题
1.简述函数模板与模板函数、类模板与模板类的区别。
答:函数模板就是实现数据类型参数化的函数定义,得到一个函数族。当函数中的数据成员、函数的返回值类型需要用未知类型进行抽象时,就需要定义函数模板,而模板函数是指在函数模板中需要使用函数时,用实际数据类型对类型参数自动实例化得到;函数模板是模板的定义,定义中用到通用类型参数,它代表的是一类函数。而模板函数是实实在在的函数定义,它在编译系统遇到具体的函数调用时生成并具有代码,用来表示某一个具体函数。
类模板如同函数模板一样,就是实现数据类型参数化的类定义,得到一个类族。在需要定义对象时,首先显式地将类模板中的类型参数实例化得到一个具体的类,这就是模板类。类模板与模板类之间是抽象与具体的关系,类模板是诸多拥有相同数据成员和成员函数的类在类型上加以抽象得到的类族,而模板类是类模板中的类型参数实例化以后得到的一个具体的类。
2.(选作题)数组和向量的主要区别是什么?
答:(1)声明方式不同。(2)向量可以使用赋值运算符、比较运算符。(3)可以用size()来测试向量中的元素个数。(4)向量可以用at()进行有效索引测试,无合法元素则抛出异常。
3.(选作题)关联容器有哪四种?简单介绍它们是怎样组成的?各有什么特点?
答:四个关联容器为:集合(set),多重集合(multiset),映射(map)和多重映射(multimap)。
集合和多重集合类提供了控制数值集合的操作,其中数值是关键字,即不必另有一组值与每个关键字相关联。集合与多重集合类的主要差别在于多重集合允许重复的关键字(key),而集合不允许重复的关键字。集合和多重集合通常实现为红黑二叉排序树。元素的顺序由比较器函数对象(comparator function object)确定。如对整型multiset,只要用比较器函数对象lessint排序关键字,元素即可按升序排列。
映射和多重映射类提供了操作与关键字相关联的映射值(mapped value)的方法。映射和多重映射的主要差别在于多重映射允许存放与映射值相关联的重复关键字,而映射只允许存放与映射值一一对应的单一关键字。
多重集合关联容器用于快速存储和读取关键字。多重映射和映射关联容器类用于快速存储和读取关键字与相关值(关键字/数值对,key/value pair)。
4.函数模板与同名的非模板函数重载时,调用的顺序是怎样的?
答:C++中,函数模板与同名的非模板函数重载时,调用的顺序如下:
⑴ 找一个参数完全匹配的函数,若有就调用它;
⑵ 找一个函数模板,实例化
您可能关注的文档
- 第17章《勾股理》全章导学案(共6份).doc
- 第18课 新期的理论探索 教案(人教版必修3).doc
- 第136989学年第一学期七年级科学期末质量评估卷.doc
- 第18周教案_616163450.doc
- 第1号关于上报Q-12安全生产“单元预警法”划分及实施方案的报告.doc
- 第1章 Viual FoxPro 6.0概述.doc
- 第1章 电子商概述.ppt.Convertor.doc
- 第1章 青海南并网光伏电站斜单轴跟踪系统设备采购及安装招标公告(cbg).doc
- 第1章 招标公(黄河公司水电铝型材联营项目厂前区办公楼气体灭火系统设备采购).doc
- 第1章 认识现教育技术与教师专业发展.doc
文档评论(0)