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

正文內(nèi)容

c語言程序設(shè)計(下)ppt-wenkub.com

2024-10-14 00:38 本頁面
   

【正文】 //用基類指針調(diào)用成員函數(shù) , 動態(tài)綁定 bPtr= amp。 Derived dObj。 endif 例子 1:虛函數(shù)與多態(tài)性例子 (2/3) //文件 //定義基類 Derived if !defined __DERIVED__H__ define __DERIVED__H__ include class Derived :public Base{ public: void show() { coutI am Derived39。 } 學(xué)習(xí)目的檢測 ? 理解繼承的概念 ? 掌握如何通過繼承建立類的層次結(jié)構(gòu) ? 掌握通過類指針操作繼承關(guān)系中的對象的方法 ? 掌握如何使用復(fù)合和繼承進行軟件的漸增式開發(fā) ? 了解多重繼承 作業(yè) 第 15章 多態(tài)性 講授內(nèi)容 ? 靜態(tài)綁定和動態(tài)綁定的概念 ? 多態(tài)性的意義和作用 ? 虛函數(shù)的定義方法 ? 抽象基類的作用和定義方法 ? 虛析構(gòu)函數(shù)的作用和使用方法 ? 如何在程序中實現(xiàn)多態(tài)性 多態(tài)性的概念 (1/5) ? 多態(tài)性:具有繼承關(guān)系的類,其對象對同一個函數(shù)調(diào)用可以作出不同的響應(yīng) ? 同一個函數(shù)調(diào)用 ——同一條函數(shù)調(diào)用語句 ? 不同的響應(yīng) ——執(zhí)行不同的函數(shù) 多態(tài)性的概念 (2/5) ? 靜態(tài)綁定和動態(tài)綁定 ? 靜態(tài)綁定 ——編譯時就能確定一條函數(shù)調(diào)用語句要調(diào)用的函數(shù) ? 和面向?qū)ο蟮乃枷氩惶喾? ? 一條指令對應(yīng)不同對象的不同操作 ——現(xiàn)實需要 多態(tài)性的概念 (3/5) ? 靜態(tài)綁定和動態(tài)綁定 ? 動態(tài)綁定:運行時才能確定函數(shù)調(diào)用語句調(diào)用的函數(shù) ? 調(diào)用對象的成員函數(shù)時(通過引用或指針),編譯器暫不確定要調(diào)用的函數(shù) ? 編譯器檢查被調(diào)用函數(shù)是否存在(函數(shù)名、參數(shù)列表、返回值) ? 程序運行時,系統(tǒng)根據(jù)接收消息的對象類型來確定要調(diào)用的函數(shù) 多態(tài)性的概念 (4/5) ? 多態(tài)性的實現(xiàn) ? 通過基類指針或引用調(diào)用虛函數(shù) ? 動態(tài)綁定 ? 多態(tài)性有助于更好地對程序進行抽象 ? 控制模塊能專注于一般性問題的處理 ? 具體的操作交給具體的對象去做 多態(tài)性的概念 (5/5) ? 多態(tài)性有助于提高程序的可擴展性 ? 可以把控制模塊與被操作的對象分開 ? 可以添加已定義類的新對象,并能管理該對象 ? 可以添加新類(已有類的派生類)的新對象,并能管理該對象 ? 常用的程序設(shè)計方法 ? 為具有繼承關(guān)系的類定義接口(虛函數(shù)) ? 用鏈表或數(shù)組組織所有對象 ? 用基類指針操作這些對象 虛函數(shù) ? 虛函數(shù)的定義 ? 在函數(shù)原型前加上關(guān)鍵字 virtual ? 如果一個函數(shù)在基類中被聲明為虛函數(shù),則他在所有派生類中都是虛函數(shù)(包括重定義函數(shù)) virtual void show()。 points5[4].setPoint(2, )。 points5[0].setPoint(0, 0)。 Line l2 (, , , )。 Point p2(, )。 i ++) os \n\tborder[ i ]: \t [i]。os, const Polygon amp。 i ++) perimeter += borders[i].getLength()。 i ++) borders[i].setLine(points[i],points[(i+1)%num])。 }。}。)。 return 0。 Line l1 (p1, p2)。 } 例子 7:軟件漸增式開發(fā) (part 2,6/6) //文件 , 第二個程序 include main() { Point p1(, )。os,const Lineamp。 double y2 = ()。 (end)。 }。 double getLength() const。 Line(Point start, Point end)。 operator(ostream amp。 cout p1:\t p1 endl。)39。os, const Point amp。p) { x = ()。 y = ()。 endif 例子 7:軟件漸增式開發(fā) (part 1,3/5) // 文件 , 類 Point的實現(xiàn) include Point::Point(double a, double b) { x = a。 // 取值函數(shù) double getX() const {return x。 // 復(fù)制構(gòu)造函數(shù) // 析構(gòu)函數(shù) ~Point()。)。 return 0。 delete []school。 endif 例子 6:繼承關(guān)系中構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序 (4/5) //文件 , 類 Teacher的實現(xiàn) include include include Teacher::Teacher(char *str, char *sch) :People(str) //調(diào)用基類的構(gòu)造函數(shù) { school = new char[strlen(sch)+1]。 } 例子 6:繼承關(guān)系中構(gòu)造函數(shù)和析構(gòu)函數(shù)的執(zhí)行順序 (3/5) //文件 //定義類 Teacher include if !defined __TEACHER__H__ define __TEACHER__H__ class Teacher : public People { public: Teacher(char *str, char *sch)。 strcpy(name, str)。 //構(gòu)造函數(shù) ~People()。 //用派生類指針指向派生類對象 //調(diào)用基類中定義的函數(shù) coutPeople p: tptrgetName() , (tptrgetSex()?male:female)endl。 //用派生類指針指向基類對象 coutPeople p: tptrgetName() , (tptrgetSex()?male:female)endl。 //用基類指針指向派生類對象 coutTeacher t: pptrgetName() , (pptrgetSex()?male:female)endl。p。 return str。 } Teacher::~Teacher() { delete []school。 }。 int getWorkYears()。 strcpy(str,name)。 //男性 else sex = 0。 }。 int getSex()。 ()。 } 例子 4:派生類重定義基類成員函數(shù) (5/5) //文件 //測試類 Teacher include include main() { People people(Zhang san, 1)。 years = (y0) ? y : 0。 int years。 } 例子 4:派生類重定義基類成員函數(shù) (3/5) //文件 include if !defined __TEACHER__H__ define __TEACHER__H__ class Teacher : public People { public: Teacher(char *str, int s, char *sch, int y)。 //男性 else sex = 0。 }。 ~People()。 ...... }。 ...... }。 ~Mammal()。 class Lion: public Mammal { public: Lion()。 String(const int len)。 s1 WuhanChangsha 類型之間的轉(zhuǎn)換 (1/4) ? 自定義類的對象和其它類型之間也可以實現(xiàn)隱式或顯式的轉(zhuǎn)換 ? 類似提升和類型強制轉(zhuǎn)換 ? 兩種類型轉(zhuǎn)換方式 ? 其它類型的數(shù)據(jù)到自定義類的對象的轉(zhuǎn)換 ? 通過轉(zhuǎn)換構(gòu)造函數(shù) ? 自定義類的對象到其它類型的數(shù)據(jù)的轉(zhuǎn)換 ? 通過類型轉(zhuǎn)換運算符函數(shù) 類型之間的轉(zhuǎn)換 (2/4) ? 類型轉(zhuǎn)換運算符函數(shù) ? 必須是類的非靜態(tài)成員函數(shù),不能是友元函數(shù) ? 沒有參數(shù)(操作數(shù)是什么?) ? 不能指定返回類型(其實已經(jīng)指定了) 類型之間的轉(zhuǎn)換 (3/4) ? 類型轉(zhuǎn)換運算符函數(shù)名: operator + 類型名 ? 例子: operator int ( ) const。 endl。 cout s1 s1 endl。 } 例 6:定義類 String, 重載運算符 +和 =(6/6) //文件 , 測試重載的運算符 include include main() { String s1,s2。 delete [] 。s) { static String res。 //重新分配適當(dāng)大小的空間 strcpy(str, )。s) { if (amp。 strcpy(,temp)。s) { char temp[1000]。 return output。 } //定義運算符 重載函數(shù) ostream amp。 }。 String amp。 ~String()。 operator(istream amp。 operator(ostream amp。 return x。 strcat(temp, )。 operator+=(String amp。x, String amp。 couts1 after s1+=s2 s1endl。 } 例 5:定義類 String, 重載運算符 +=, x+=y將 y中的字符串連接到 x的后面 (5/5) //文件 , 測試重載的運算符 include include main() { String s1,s2。 delete []str。String::operator+=(String amp。 = new char[strlen(temp)+1]。input, String amp。s) { output。 } String::~String() { delete [] str。 private: char *str。 ~String()。 operator(istream amp。 operator(ostream amp。 cout Output is: endl。 return input。 cin temp。 } //定義運算符 重載函數(shù) istream amp。 operator(ostream amp。 endif 例 4:定義字符串類 String, 并重載流插入運算符 和流提取運算符 ,實現(xiàn)用 cout和 cin直接輸出和輸入類 String的對象 (2/4) //文件 include include String::String(char *m) { str = new char[strlen(m)+1]。 public: String(char *m=)。 friend istream amp。 重載流插入和流提取運算符 (2/2) ? 和 應(yīng)重載為成員函數(shù)還是友元函數(shù)? ? 有選擇嗎? ? 重載函數(shù)的返回類型應(yīng)該是什么? ? 有選擇嗎? ? 重載函數(shù)的參數(shù)列表應(yīng)該是什么? ? 有選擇嗎? 例 4:定義字符串類 String, 并重載流插入運算符 和流提取運算符 ,實現(xiàn)用 cout和 cin直接輸出和輸入類 String的對象 (1/4) //文件 if !defined __STRING__H__ define __STRING__H__ include include class String { friend ostream amp。, int)。 單目運算符重載 (3/3) ? 后自增,如: b++ ? 重載函數(shù)可為 C的成員函數(shù),原型為 C amp。 operator++()。 if (!
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1