利用函数样板来实现通用函数的理想.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章上篇函板板建立通用函通用的另一人的事一次就了何需要通用函何需要通用函利用函板通用函的理想函板的定方式函板的使用器到底做了甚另一函板的使用通用的通用的通用的印出印出印出通用的通用的法一可乎否法二印出啥察使用只是少打字而已可行的大小未低甚不使用就好了的不行板的宣告的化函定不可有任何指令函板板函函呼叫一函呼叫二函呼叫三作通用的用在通用的的任何需要通用你倦了不同的我需要通用的板板的使用定在板外的成函定在板外的成函重新定通用二座改使中的程式可以作再度注意之要有空格不根本不可以成做相同的事每都只要原

第十一章 (上篇) 函數樣板(Function Template) 與 類別樣板(Class Template) 建立通用函數(Generic Functions) 通用類別(Generic Classes) - Code Reuse 的另一種發揮 - 煩人的事 經歷一次就夠了 為何需要通用函數? 為何需要通用函數? 利用函數樣板來實現通用函數的理想 函數樣板的定義方式 函數樣板的使用 編譯器到底做了甚麼? 另一種函數樣板的使用 EX: 通用的swap() void swap(int x, int y) { int temp=x; x=y; y=temp;} void swap(double x, double y) { … } void swap(frac x, frac y) { … } void main( ) { int a = 5, b =3 ; double d1=3.4, d2=5.6 ; frac f1(5, 3), f2(6, 7) ; swap(a, b); swap(d1, d2); swap(f1, f2) ; } 通用的swap() template class T void swap1(T x, T y) { T temp=x; x=y; y=temp;} void main( ) { int a = 5, b =3 ; double d1=3.4, d2=5.6 ; swap1(a,b); coutabendl; swap1(d1, d2); coutd1d2endl; } EX: 通用的print_arr() void main( ) { int x[] = {1,2,3} ; float y[] = {1.1,2.2,3.3}; complex z[3] ={{1,1,},{2,2},{3,3}}; print_arr(x, 3) ; // 印出 1 2 3 print_arr(y, 3); // 印出 1.1 2.2 3.3 print_arr(z, 3) ; // 印出 1+1i 2+2i 3+3i } EX: 通用的ROR() EX: 通用的max(a,b) [寫法一] template class T T max(T a, T b) { return (ab)?a:b; } void main() { cout max(5, 3) endl; cout max(-3.14, 5.2) endl; cout max(2.3, 5) endl ; //可乎? } 否 EX: max(a,b) [寫法二] template class T1, class T2 T1 max(T1 a, T2 b) { return (ab)?a:b; } void main() { cout max(5, 3) endl; cout max(-3.14, 5.2) endl; cout max(5, 7.8) endl ; //印出啥? } 觀察 使用Function Template只是少打字而已,可執行檔的大小並未減低。 為甚麼不使用Macro就好了? [Note1]: template class T 的scope [Note2]: 換不換行沒關係 [Note3]:樣板參數的宣告的變化 [Note4]: template ….與函數定義間不可有任何指令 [Note5]: 函數樣板與樣板函數 函數呼叫規則 (Rules of Function Invocation) (一) 函數呼叫規則(二) 函數呼叫規則(三) [作業] 通用的find與sort int find(int a[], int size, int x) { …… } void sort( int a[], int size) { } void main() { int a[50]; complex c[50]; frac f[50] ; // 應用sort()與find()在int[], complex[]與frac[] } 通用的find template class T int find(T a[], int size, T x) { int i=0; int result; for(i=0;isize;i++) { if(x==a[i]) { result=i; break; } } return result;} T 的責任 為何需要通用類別 (Generic Cl

文档评论(0)

zhaohuifei + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档