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

正文內容

oop(c第12章模板最終版ppt-第12章模板template(已修改)

2025-10-10 20:28 本頁面
 

【正文】 第 12章 模板 (Template) 面向對象程序設計 (C++) 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 2 引言 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 3 引言: IntStack ? 創(chuàng)建一個棧,這個棧類只存放 int類型的值 1. 支持初始化、 push()、 pop()、清除等方法; 2. 棧中所有元素的類型都是 int. 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 4 V P 用來存放 int的棧類 IntStack class IntStack{ int *v。 // 棧底 int *p。 // 棧頂 int sz。 // 棧的大小 public: IntStack(int s){ v=p=new int[sz=s]。 } ~IntStack() { delete[ ] v。} void push(int a) { *p++ = a}。 int pop() { return * p 。} int size() const { return pv。 } }。 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 5 代碼重用 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 6 如何實現(xiàn)代碼重用? V P V P CharStack ObjStack 現(xiàn)在希望再創(chuàng)建能存放其他類型的棧類,如:char, float, 甚至用戶自定義的類型對象。 從棧的結構和操作方式上來說,除了每個元素的類型不一樣外,其它沒有任何區(qū)別。因此應該可以重用 IntStack的代碼。 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 7 問題是:如何重用? 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 8 C的方法之一:代碼拷貝 class CharStack{ char *v。 // 棧底 char *p。 // 棧頂 int sz。 // 棧的大小 public: CharStack(int s){ v=p=new char[sz=s]。} ~CharStack() { delete[ ] v。} void push(char a) { *p++ = a}。 char pop() { return * p 。} int size() const { return pv。 } }。 缺點: 1. 表現(xiàn)繁瑣 。 2. 易發(fā)生錯誤 。 3. 缺乏美感 。 非常低效! 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 9 C的方法之二: typedef typedef int T。 class Stack{ T *v。 // 棧底 T *p。 // 棧頂 int sz。 // 棧的大小 public: Stack(int s){ v=p=new T[sz=s]。} ~Stack() { delete[ ] v。} void push(T a) { *p++ = a}。 T pop() { return * p 。} int size() const { return pv。 } }。 缺點: 1. 每次使用 Stack之前,都必 須加上 typedef語句,很麻 煩。 2. 由于 T是全局名,無法重新 定義,一個類不能同時用到 char棧和 int棧; 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 10 smalltak方法 (略 ) 使用繼承 ? 復雜 ,混亂 ! 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 11 C++的方法:模板 改進 typedef,將它從預處理器移入到編譯器中。新的代碼替換裝置稱為“模板” (template)。 ? 非常象宏,卻更清晰,更易于使用; ? 模板實際上是一組類; ? 形式上很簡潔。 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 12 模板語法 《面向對象程序設計》 中國科學技術大學計算機系 馬建輝 13 類模板定義 template class T class 類模板名 { // 類模板的定義 }; 注: T是一個類模板的類型參數(shù),可以有一個或多個,可以是任意類型。 《面向對象程序設計》 中國科學技
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1