




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
练习二一理解问答题 请回答下面有模板的定义问题: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 输液反应处理课件
- 移动借贷平台创新创业项目商业计划书
- 2025年广东江门台山大湾控股发展集团有限公司招聘考试笔试试题(含答案)
- 2025年福鼎市消防员考试笔试试题(含答案)
- 水产废弃物环保处理创新创业项目商业计划书
- 电影票在线选座创新创业项目商业计划书
- 输卵管造影科普课件
- 2025年工业互联网平台5G通信模组在智能物流行业的适配性分析报告
- 2025年文化创意产业园区建筑室内外绿化设计评估报告
- 2025年土壤污染修复技术设备投资成本与效益分析报告
- 网约车司机礼仪培训
- 山东省二年级下册数学期末考试试卷
- 交通事故现场勘查课件
- GB/T 44621-2024粮油检验GC/MS法测定3-氯丙醇脂肪酸酯和缩水甘油脂肪酸酯
- 餐饮加盟协议合同书
- 知道网课智慧《睡眠医学(广州医科大学)》测试答案
- 糖尿病医疗广告宣传指南
- T CEC站用低压交流电源系统剩余电流监测装置技术规范
- python程序设计-说课
- ISO15614-1 2017 金属材料焊接工艺规程及评定(中文版)
- 国际金融(第七版)全套教学课件
评论
0/150
提交评论