- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3第三章 模版
C++面向对象程序设计教程 第3章 模板 习题解答 一、选择题 二、填空题 三、编程题 * 1.下列关于模板的叙述中,错误的是 。 A)模板声明中的第一个符号总是关键字template B)在模板声明中用“<”和“>”括起来的部分是模板的类型形参表 C)类模板不能有数据成员 D)在一定条件下函数模板的类型实参可以省略 解析:由模板声明的格式可知选项A、B正确。在调用模板函数时,如果编译系统从模板函数的类型实参表中得到的信息已经能够判断部分或全部虚拟类型参数所对应的实际类型,而且它们又正好是模板形参中最后的若干个参数,则在模板类型实参表中可以省略这几个参数,选项D正确。类模板中可以有数据成员,数据成员的类型可以是虚拟类型,也可以是具体类型,选项C错误。 答案:C 2.有以下函数模板定义: template class ElemType ElemType Fun(const ElemType x, const ElemType y) { return x * x + y * y; } 在下列对Fun()的调用中,错误的是 。 A)Fun(3, 5); B)Fun(3.0, 5.5); C)Fun(3, 5.5); D)Funint(3, 5.5); 解析:当从模板函数类型实参表获得的信息有矛盾时,模板类型实参不能省略。例如选项C中,编译系统从第一个参数3获得的信息是ElemType对应于int,而从第二个参数5.5处获得的信息是ElemType对应于double,两者相互矛盾,因此,编译时将产生错误。解决的方法之一是显式给出虚拟类型参数ElemType对应的模板类型实参,强制ElemType对应于int。 答案:C 3.关于关键字class和typename,下列表述中正确的是 。 A)程序中typename都可以替换为class B)程序中的class都可以替换为typename C)在模板类型形参表中只能用typename来声明参数的类型 D)在模板类型形参表中只能用class或typename来声明参数的类型 解析:程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。例如:在“模板类型形参表”中,关键字typename和class是可以互换的;但是在“类模板名”前的关键字class代表的含义是类,不可以用typename代替,选项B错误。在模板类型形参表中除了typename和class以外也可以用常规类型来声明参数的类型,选项C、D错误。 答案:A 4.有以下函数模板: template class ElemType ElemType Square(const ElemType x) { return x * x; } 其中ElemType是 。 A)函数形参 B)函数实参 C)模板类型形参 D)模板类型实参 解析:由函数模板的定义可知ElemType为模板类型形参。 答案:C 5.C++中的模板包括 。 A)对象模板和函数模板 B)对象模板和类模板 C)函数模板和类模板 D)变量模板和对象模板 解析:C++语言通过模板提供了一种将类型参数化的机制,其中包括函数模板和类模板。 答案:C 1.已知一个函数模板的声明如下: template typename T1, typename T2 T1 Fun(T2 n) { return n * 5.0; } 若要求以int型数7为函数实参调用该模板函数,并返回一个double型数,则该调用应表示为 。 解析:当虚拟类型类型参数作为函数的返回值类型,而函数的返回值类型与函数参数的类型可以不同时,不管函数类型实参的类型是什么,均不能省略模板类型实参,此题的模板类型实参应为double, int。 答案:Fundouble, int(7) 2.已知int dbl(int n ) { return n + n; }和long dbl(long n) { return n + n; }是一个函数模板的两个实例,则该函数模板的声明是 template typename ElemType 解析:将类型int和long参数化,用模板类型参数ElemType代替,可得该函数模板。 答案:ElemType Dbl(ElemType n ) { return n + n; } 3.下面程序的运行结果是 。 template class ElemType ElemType Min(const E
文档评论(0)