freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

面向?qū)ο蟪绦蛟O計c語言四ppt-展示頁

2025-01-29 12:55本頁面
  

【正文】 tbendl。 coutaendl。 Stackint stk。pstk[top]。 return NULL。 //元素賦值 , 棧頂指針加 1 return true。 return false。 } templatetypename T bool StackT::Push(T amp。 //根據(jù)形參動態(tài)生成的存儲空間 size=num。} }。 //入棧 T* Pop()。 //構(gòu)造函數(shù) bool Push(T amp。 //堆棧容量 int top。 templatetypename T class Stack { private: T *pstk。 } 28 0 0 0 0 0 10 0 0 程序的運行結(jié)果為: 29 【例 】定義堆棧類模板 Stack, 實現(xiàn)堆棧基本操作,并測試。 ()。 //修改了對象 ais的第 2個元素 afs[3]=。 SafeArrayfloat,4 afs。 coutendl。isize。 } return ary[i]。 SafeArrayT,size::operator[](int i) //重載運算符 [] { if(i0||i=size) //進行下標的安全檢查 , 超出范圍就退出程序 { cout”Index out of bound”endl。i++) ary[i]=0。 template typename T,int size SafeArrayT,size::SafeArray () //構(gòu)造函數(shù) { for(int i=0。 //重載運算符 [] void Print()。 //構(gòu)造函數(shù) T amp。 templatetypename T,int size class SafeArray //定義類模板 { private: T ary[size]。 23 ? 類模板的成員函數(shù)可以放在類模板的定義體中 ,與普通成員函數(shù)定義方法一樣 , 也可以放在類模板的外部定義 , 類模板的成員函數(shù)其實都是函數(shù)模板 , 其定義形式如下: template 類型形參列表 函數(shù)返回類型 類模板名 類型名表 ::函數(shù)名 (形參表 ) { 函數(shù)體 } 24 ? 類模板本身不是具體的類 , 其中涉及的數(shù)據(jù)類型都是抽象的類型 , 要想使用類模板 , 必需先用實際的類型來取代抽象的類型 , 此過程將確定類模板的實例 , 即 模板類 , 然后再用該類定義對象 , 其格式如下: 類模板名 類型實參表列 對象名; 25 【例 】重新定義類模板 SafeArray, 并進行測試。 coutendl。isize。 } return ary[i]。 operator[](int i) //重載運算符 [] { if(i0||i=size) //進行下標的安全檢查 , 超出范圍就退出程序 { cout”Index out of bound!”endl。i++) ary[i]=0。 //數(shù)組 ary大小由模板參數(shù) size決定 public: SafeArray () //構(gòu)造函數(shù) { for(int i=0。 /* */ includeiostream using namespace std。 20 ? 定義類模板的一般格式為: template 類型形參列表 class 類模板名 { 類模板體定義 }。 ? 與函數(shù)模板相似 , 通過使用類模板可使得所定義的類中的某些數(shù)據(jù)成員 、 某些成員函數(shù)的參數(shù) 、 某些成員函數(shù)的返回值都可以是任意類型的 ( 包括基本類型和用戶自定義類型 ) 。 } 18 Number:13 Name:Zhang 程序的運行結(jié)果為: 19 類模板與模板類 ? 類模板 就是設計一種類的框架 , 可以適用于不同的數(shù)據(jù)類型 , 是類的抽象 。 ()。 int main() { Student st1(12,”Li”),st2(13,”Zhang”),st3(0,””)。 cout”Name:”nameendl。st) //重載運算符 “ ” { return number。 strcpy(name,s)。 char name[20]。b) //使用引用類型來傳遞對象 { return ab?a:b。 Max(T amp。 } 15 20 Hello 程序的運行結(jié)果為: 16 【例 】模板函數(shù)與 Student類的結(jié)合。 } void main() { coutMax(10,20)endl。 /* */ include include template typename T T Max( T a, T b) //求兩個 T類型數(shù)最大值 { return ab?a:b。 } ? 而把此參數(shù)類型具體化產(chǎn)生新的模板函數(shù)的過程稱為 函數(shù)模板實例化 。 return 0。 fc=Abs(fa) 。 fc=Max(fa,fb)。 ic=Abs(ia) 。 ic=Max(ia,ib)。 } 11 int main( ) { int ia=5,ib=11,ic。 template typename T T Max( T a, T b) //求兩個 T類型數(shù)最大值 { return ab?a:b。 10 【例 】編寫求最大和求絕對值兩個函數(shù)模板。 } 9 ? 模板并不是函數(shù) , 它是以具體的類型為實參來生成函數(shù)體的一種程序框架 , C++在編譯函數(shù)模板時 , 不會產(chǎn)生任何執(zhí)行代碼 。 7 函數(shù)模板與模板函數(shù) ? 函數(shù)模板是函數(shù)的一種抽象形式 。 考慮這樣兩個問題: ? 第一 , 能否避免函數(shù)重載時的重復工作 ? ? 第二 , 這些重載函數(shù)對新的數(shù)據(jù)類型是否支持 ? ? 要解決這兩個問題 , C++中的模板就可以做到 。 } ? 可以看出 , 求任何類型兩個數(shù)的最大值 , 都有下列函數(shù)定義形式: T Max( T a, T b) //求兩個 T類型數(shù)最大值 { return ab?a:b。 int Max( int a, int b) //求兩個 int數(shù)最大值 { return ab?a:b。 5 模板的概念 ? 前面已經(jīng)學過函數(shù)的重載 , 對于 int型和 float型數(shù)據(jù) , 必須定義兩個單獨的函數(shù) Max( ), 才能實現(xiàn)對兩個數(shù)求最大值的功能 。 李愛華 程磊 編著 清華大學出版社 同名教材 配套電子教案 2022年 2月 面向?qū)ο蟪绦蛟O計( C++語言) 4 2 第二部分 面向?qū)ο蟮某绦蛟O計 第 3章 類和對象 (一 ) 第 4章 類和對象 (二 ) 第 5章 繼承和派生 第 6章 虛函數(shù)與多態(tài)性 第 7章 運算符重載 第 8章 模板 第 9章 標準模板庫 STL 第 10章 C++語言的輸入和輸出 3 第 8章 模板 本章重點: ? 模板的概念 ? 函數(shù)模板與模板函數(shù) ? 類模板與模板類 4 ? 模板 是 C++最重要的特性之一 , 使用模版可以設計出與數(shù)據(jù)類型無關(guān)的程序框架 , 可以建立具有通用類型的類庫和函數(shù)庫 。 ? 模板是 C++軟件重用機制的又一完美體現(xiàn) , 引出了參數(shù)化多態(tài)性的概念 , 即把程序所處理的對象的類型參數(shù)化 , 使得一段程序可以用于多種不同類型的對象 。 如下程序所示的函數(shù) Max,, 實現(xiàn)兩個函數(shù)的主要操作都是一樣的 , 唯一的差別是:一個函數(shù)處理 int 型數(shù)據(jù) , 另一個函數(shù)處理 float 型數(shù)據(jù) 。 } float Max( float a, float b) //求兩個 float數(shù)最大值 { return ab?a:b。 } 6 ? 這種 Max重載函數(shù)的統(tǒng)一特征是參數(shù)類型不同 , 函數(shù)體操作卻完全相同 。 ? 有了模板 , 重復的函數(shù)重載工作可以省略; ? 良好的模板再結(jié)合運算符重載等其他機制 , 也能夠適用于各種新定義的數(shù)據(jù)類型 。 函數(shù)模板的定義形式為: template class T1,class T2,... 返回類型 函數(shù)模板名 ( 數(shù)據(jù)參教表 ) { 函數(shù)模板的函數(shù)體 } 8 ? 前面的 Max函數(shù)因此可以寫成如下形式 : template typename T T Max( T a, T b) //求兩個 T類型數(shù)最大值 { return ab?a:b。 ? 只有在用函數(shù)模板來定義具體函數(shù)時 , 才會生成執(zhí)行代碼 , 而使用函數(shù)模板則只需以函數(shù)模板名為函數(shù)名進行函數(shù)調(diào)用即可 。 /* */ includeiostream using namespace std。 } template typename T T Abs( T a) //求 T類型數(shù)的絕對值 { return a=0?a:a。 float fa=,fb=,fc。 cout”Max(ia,ib)=”icendl 。 cout”Abs(ia)=”icendl 。 cout”Max(fa,fb)=”fcendl 。 cout”Abs(fa)=”fcendl 。 } 12 Max(ia,ib)=11 Abs(ia)=5 Max(fa,fb)= Abs(fa)= 程序的運行結(jié)果為: 13 ? C++的編譯器在掃描到 Max(ia,ib)時 ,因為是第一次發(fā)現(xiàn) Max函數(shù)調(diào)用 ,而 ia,ib是整型 , 因此確定函數(shù)模板中的抽象類型 T為 int,所以內(nèi)部生成如下的模板函數(shù): template int int Max( int a, int b) { return ab?a:b。 14 【例 】重載模板函數(shù)。 } char *Max(char *pa,char *pb) { return strcmp(pa,pb)0?pa:pb。 coutMax(Hello,Fellow)endl。 /* */ include //使用該頭文件 , 因為本程序?qū)⑦M行運算符重載 include template typename T Tamp。a, T amp。 } class Student { int number。 17 public: Student(int i,char *s) //構(gòu)造學生對象 { number=i。 } bool operator(Student amp。 //返回成員 number的比較結(jié)果 } void Print() //輸出結(jié)果 { cout”Number:”numberendl。 } }。 st3=Max(st1,st2)。 return 0。 ? 利用類模板可以針對不同的數(shù)據(jù)類型定義出具有共性的一組類 。 ? 也可以這樣說 , 通過類模板可將程序所處理對象 ( 數(shù)據(jù) )的類型參數(shù)化 , 從而使得同一段程序可用于處理多種不同類型的對象 ( 數(shù)據(jù) ) , 提高了程序的抽象層次與可重用性 。 ? 其中類型形參列表與函數(shù)模板形式相同 , 如typename T1, typename T2,…… . 21 【例 】定義類模板 SafeArray, 用來表述安全數(shù)組的概念。 templatetypename T,int size class SafeArray //定義類模板 { private: T ary[size]。isize。 //初值設為 0, 對基本數(shù)據(jù)類型有效 } 22 T amp。 exit(0)。 } void Print() //輸出數(shù)組元素 { for(int i=0。i++) coutary[i] 。 } }。 /* */ includeiostream using namespace std。 //數(shù)組 ary大小有模板參數(shù) size決定 public: SafeArray ()。 operator[](int i)。 //輸出數(shù)組元素 }。isize。 //初值設為 0, 對基本數(shù)據(jù)類型有效 } 26 template typename T,int size Tamp。
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1