




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机程序设计 顾刚计算机教学实验中心 大整数类的定义 大整数类的定义 加法如何实现 减法如何实现 运算符 如何重载 运算符 如何重载 术语简介 模板通用的语言描述称为模板函数模板通用抽象的函数描述类模板通用抽象的类描述异常处理机制指用于控制程序期间错误的结构化方法 函数模板 定义一个函数模板的形式为 template 其中中的模板参数的形式为 class这里关键字class与一般所讲的类无关 指某一个内部类型或用户自己定义的数据类型在使用模板函数时 模板中的类型参数可用一个实际类型替换 从而达到了类型通用的目的 求两数最大值的函数模板 include 例12 1 include 含有重载 TMax Ta Tb returna b a b intmain inti1 3 i2 5 doubled1 3 3 d2 5 2 stringstr1 xjtu str2 xian cout Typeint Max i1 i2 endl cout Typedouble Max d1 d2 endl cout Typestring Max str1 str2 endl return0 希尔排序方法 间隔8间隔4间隔2间隔1 includevoidshell sort intlist intcount intexchange i tmp gap count while gap 1 gap gap 2 do exchange 0 for i 0 ilist i gap tmp list i list i list i gap list i gap tmp exchange 1 while exchange 0 intmain inti table 16 59 20 17 13 28 14 23 83 36 98 11 70 65 41 42 15 shell sort table 16 cout Theresultis endl for i 0 i 16 i cout table i cout endl return0 includetemplatevoidshell sort TTlist intcount intexchange i gap count TTtmp while gap 1 gap gap 2 do exchange 0 for i 0 ilist i gap tmp list i list i list i gap list i gap tmp exchange 1 while exchange 0 voidmain inti table 16 59 20 17 13 28 14 23 83 36 98 11 70 65 41 42 15 doubletable f 9 59 1 20 1 17 7 13 9 28 9 14 2 23 3 83 3 36 6 shell sort table 16 shell sort table f 9 cout Theresultis endl for i 0 i 16 i cout table i cout endl for i 0 i 9 i cout table f i cout endl 冒泡排序改成模板 includevoidbubble sort inta intN for inti 0 ii j j 1 if a j 1 a j inttmp a j 1 a j 1 a j a j tmp intmain constintCOUNT 16 intlist COUNT 503 87 512 61 908 170 897 275 653 426 154 509 612 677 765 703 bubble sort list 16 cout Theresultis endl for intk 0 k 16 k cout list k cout endl return0 函数模板的注意事项 在函数模板的参数表中 至少有一个参数的类型为模板的类型参数 另外 函数的返回值的类型也可以是该类型参数模板中可以带有多个参数类型 例如 templatevoidfunc1 T1arg1 T2arg2 T3arg3 函数可以带有模板参数表中未给出的数据类型的参数templateTfunc2 Targ1 intarg2 include例12 4templateTPower Ta intexp Tans a while exp 0 ans a returnans intmain 测试用主函数 cout 3 5 Power 3 5 endl cout 1 1 2 Power 1 1 2 endl return0 定义求幂函数的模板 includetemplateintsequentialsearch Ta constT 用函数模板实现顺序查找 类模板 类是对问题空间的抽象 而类模板则是对类的抽象与函数模板相似 程序中可以通过高度抽象首先定义一个类模板 然后通过使用不同的实参生成不同的类 类模板的定义方法为 template class 定义通用数组类 includetemplateclassarray public X ptr array intN ptr newX N intmain arraya 16 a ptr 0 168 cout arrayclass a ptr 0 endl return0 定义圆柱体类模板 includetemplateclassYZT Xx y z XR H public YZT x y z R H 0 YZT Xx1 Xy1 Xz1 XR1 XH1 x x1 y y1 z z1 R R1 H H1 Xvolumn return3 14 R R H Xarea return6 28 R R R H voidmain YZThhh 0 0 0 2 0 3 测试int类型cout 体积 hhh volumn endl cout 面积 hhh area endl 异常处理机制 异常处理机制是C 中用于控制管理程序运行期间错误的一种结构化方法其基本思想是将异常的检测与处理异常分离当在程序中检测到异常存在 将引发一个异常 并转向处理这个异常的程序模块 异常处理机制的语法结构 try catch 类型1参数1 catch 类型n参数n catch 异常处理机制注意 引发异常的throw语句必须在try语句块内 或是由try语句块中直接或间接调用的函数体执行throw语句的一般形式为 throwexceptionexcepttion为异常值 通常写成表达式Throw语句功能 将异常值与catch语句的类型进行匹配 并转向执行匹配上的catch模块catch语句的类型匹配过程中不作任何类型转换 异常处理机制的使用 includevoidtestfun inttest try if test throwtest elsethrow itisazero catch inti cout Exceptoccurred i endl catch constchar s cout Exceptoccurred s endl intmain testfun 10 testfun 100 testfun 0 return0 除0异常 include Example12 6 除0异常doubleDiv doublea doubleb intmain 测试用主函数 doublen1 n2 result cout n1 n2 try result Div n1 n2 cout n1 n2 result endl catch double cout Exceptoccurred attemptedtodividebyzero endl cout Inputtwonumber endl cout Thatisok endl return0 doubleDiv doublea doubleb if b 0 0 throwb returna b 求一元二次方程的根 include Example12 7 解一元二次方程 includevoidRoot doublea doubleb doublec doublex1 x2 delta delta b b 4 a c if a 0 throw dividebyzero if delta a b c try Root a b c catch char cout Exceptoccurred itisnotaquadraticequation endl catch int cout Exceptoccurred therealrootof
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论