全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
练习二一理解问答题 请回答下面有模板的定义问题:1下列模板的定义是否合法的?若为非法的,请简单扼要说明理由。(1) template class Container1; template class Container1;(2) template class Container2;(3) template class Container3;(4) template class Container2;(5) template class Container5; 2关于类List的如下定义中有若干错误,请指出其所在行号并改正 (但不要求补充实现成员函数)。 1 template class ListItem; 2 3 template class List 4 5 public: 6 List(): front(NULL), end(NULL) 7 List (const List &); 8 List(); 9 void insert(ListItem *ptr, elemType value); 10 int remove(elemType value); 11 int size( ) return _size; 12 private: 13 ListItem *front; 14 ListItem *end; 15 ; 二、理解问答题 val_ary是一个类模板,类模板的每个实例类实现了某个具体的数据类型的数组,如val_ary是一个整型的数组类。可以通过 运算符来访问数组中的每个元素。还有一个模板函数inv(),其函数原型为: template val_ary inv(const val_ary & x); 该函数的作用是将作为参数的数组x的每个元素的符号取反,并返回得到的新的数组。如原来的数组为: 4 -13 -5 7 -1 将这个数组作为参数传递给函数inv后,函数返回的数组就变成: 4 13 5 -7 1 要求:阅读下列程序,回答后面的问题。 /* */ #include #include /该头文件中定义了模板类val_ary和模板函数inv() #define A_SIZE 10 typedef val_ary INTARY; void main() INTARY iarray(A_SIZE);/定义一长度为A_SIZE的数组对象 for (int i = 0; i A_SIZE; i+) iarray =i;/赋初始值 cout Size of iarray = iarray.size() endl; cout The values of iarray before calling inv():n; for (i = 0; i A_SIZE; i+) cout iarray ; cout endl; INTARY inv_array = inv(iarray); cout The result of iarray after calling inv():n; for (i = 0; i A_SIZE; i+) cout inv_array ; cout endl; /* */ 问题1,写出程序的输出结果 问题2,关于程序中的语句:INTARY iarray(A_SIZE); 下列说法哪些是正确的,哪些是错误的?在下表相应的位置写上“对”或“错” 题号 A B C D E 对/错 (A) 该语句定义了一个对象irray,这个对象是类val_ary的实例 (B) 该语句说明了一个函数原型,函数的名字为iarray,参数为A_SIZE,函数的返回值类型为INTARY (C) 模板类val_ary一定有一个只带一个参数的构造函数 (D) 模板类val_ary一定有一个只带两个参数的构造函数 (E) A_SIZE将作为参数传递给val_ary的构造函数,初始化val_ary对象 问题3:下面是模板函数inv()的实现。这个实现中有错误,指出错误并写出正确的实现。 template val_ary inv(const val_ary& x) for(int i=0; ix.size(); i+)x=-x; return x; 问题4,从上面的程序中,你可以推断出,val_ary模板类中至少重载了哪个或哪些C+的运算符? 三,理解问答题阅读下面的程序,写出程序运行的结果,并给以简单扼要的说明。/* */ #include class Cla_Base private:/.其他成员 public:virtual void fun_Disply(long num) cout class Cla_Base: num endl; void fun_Disply (char * str) cout class Cla_Base: str endl ; void fun_Disply () cout Disply in class Cla_Base without parameter!n ; ; class Cla_Sub: public Cla_Base private:static int obj_n;/.其他成员public:Cla_Sub() obj_n +; Cla_Sub() obj_n -; static int GetObj_n() return obj_n; ;void fun_Disply (long num) cout class Cla_Sub: num endl ; void fun_Disply (char * str) cout class Cla_Sub: str endl ; void fun_Disply () cout fun_Disply (Hello!);pBase- fun_Disply (2000);pBase- fun_Disply ();pSub- fun_Disply (Hi!);pSub- fun_Disply (); coutThere are GetObj_n() objectsendl;delete pSub;coutThere are Cla_Sub:GetObj_n() objectendl; 一 理解问答题 请回答下面有模板的定义问题:1下列模板的定义是否合法的?若为非法的,请简单扼要说明理由。(1) 非法的,两次声明不一样(2) 合法的(3) 非法的,两个类型参数的名字不能相同(4) 非法的,参数U没有类型说明(5) 合法的2关于类List的如下定义中有若干错误,请指出其所在行号并改正 (但不求补充实现成员函数)。 1 template class ListItem; 2 3 template class List 4 5 public: 6 List (): front(NULL), end(NULL) /有错 7 List (const List &); /有错 8 List(); 9 void insert(ListItem *ptr, elemType value);/有错 10 int remove(elemType value); /有错 11 int size( ) return size; 12 private: 13 ListItem *front; /有错 14 ListItem *end; /有错,以上错均已改正 15 ; 二,理解问答题 问题1. 答:程序的输出结果为: Size of val_array = 10 The values of val_array before calling inv(): 0 1 2 3 4 5 6 7 8 9 The result of val_array after calling inv(): 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 问题2答: 题号 A B C D E 对/错 对 错 对 错 对 问题3答:该函数实现有以下错误: (1) 函数的参数x为const参数,不能在函数体中被改变 (2) 在函数中应该创建一个临时对象,这个对象的内容由参数x的内容运算而来 (3) 函数返回的应是临时对象,而不是参数 正确的函数实现为: template val_ary inv(const val_ary& x) INTARY ret_array(x);/利用拷贝构造函数构造临时对象 for (int i = 0; i x.size(); i+) ret_array *= -1;/符号取反 return ret_array;/返回临时对象 或者 template val_ary inv(const val_ary& x) INTARY ret_array(x.size();/构造一个与x长度相同的对象 for (int i = 0; i x.size(); i+) ret_array = x * (-1);/符号取反 return ret_array;/返回临时对象 问题4答:重载了取数组下标的运算符 三,理解问答题 答:输出结果为:class Cla_ Base: Hello!class Cla_ Sub: 2000 /动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精细化工生产项目可行性研究报告
- 化工工程项目安全设计方法汇编
- 矿山尾矿库生态修复方案
- 集中供水保障提升工程社会稳定风险评估报告
- 2026年旅游从业人员流失率的大数据研究
- 机场工程滑行道及停机坪施工方案
- 冷链物流中心项目国债资金申请报告
- 建筑装饰装修工程细部节点施工技术方案
- 基于BIM的高层建筑多专业交叉作业碰撞检测施工方案
- 燃气锅炉房供热保障能力提升工程绩效评价
- 2024年湖南省金融机构反洗钱知识竞赛考试题库(含答案)
- 2022浪潮英信服务器NF5280M6产品技术白皮书
- 小区燃气管网课程设计
- 全国医药行业特有职业技能竞赛中药调剂员赛项备赛试题库(含答案)
- GB/T 17727-2024船用法兰非金属垫片
- 黄酒酿造技术-谢广发
- PDS-7000系统用户手册(V300-最终版)
- GB 9744-2024载重汽车轮胎
- 2023石淋临床路径
- 使用危险化学品工业企业安全生产基本规范
- 高血压的三级护理查房课件
评论
0/150
提交评论