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

正文內(nèi)容

c電子課件(下)第八章-展示頁

2025-01-01 12:16本頁面
  

【正文】 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) 注意: 本例中標(biāo)準(zhǔn) C++字符串 string是作為成員對象使用的( 聚合 ),動態(tài)內(nèi)存分配的構(gòu)造和析構(gòu)被封裝起來,使用十分簡單。 int grade。 //打印學(xué)生情況 }。 //課程設(shè)置 int GetCourse(string )。 //默認(rèn)派生類構(gòu)造函數(shù) ~Student()。 //30門課程與成績 public: Student(string id, string name,Tsex sex,int birthday, string homeadd, string nostud)。 //接口函數(shù): 【 例 】 由在冊人員類公有派生學(xué)生類 派生的學(xué)生類 : class Student:public Person{ //定義派生的學(xué)生類 string NoStudent。} //提取住址 void PrintPersonInfo()。} //提取生日 void SetHomeAdd(string )。} //提取身份證號 void SetBirth(int birthday){Birthday=birthday。} //提取性別 void SetId(string id){IdPerson=id。} //提取名字 void SetSex(Tsex sex){Sex=sex。 //析構(gòu)函數(shù) 【 例 】 由在冊人員類公有派生學(xué)生類 void SetName(string)。//構(gòu)造函數(shù) Person()。 //生日 ,格式 1986年 8月 18日寫作 19860818 string HomeAddress。 //性別 enum Tsex{mid,man,woman}。 //身份證號 ,18位數(shù)字 string Name。我們希望基類和派生類共享相同的公有接口 ,只能采用公有派生來實(shí)現(xiàn)。詳細(xì)內(nèi)容后文討論。不管原來的函數(shù)是否可用 一律重寫可免出錯 。 第三步中,獨(dú)有的新成員才是繼承與派生的核心特征。 多層次繼承: 編制派生類時可分四步 吸收基類的成員 改造基類成員 發(fā)展新成員 重寫構(gòu)造函數(shù)與析構(gòu)函數(shù) 類的派生與繼承 不論是數(shù)據(jù)成員,還是函數(shù)成員,除構(gòu)造函數(shù)與析構(gòu)函數(shù)外全盤接收 聲明一個和某基類成員同名的新成員 ,派生類中的新成員就屏蔽了基類同名成員 派生類新成員必須與基類成員不同名,它的加入保證派生類在功能上有所發(fā)展。這樣形成了一個相互關(guān)聯(lián)的類族。直接參與派生出某類稱為直接基類,而基類的基類,以及更深層的基類稱為 間接基類 。 單繼承: 派生類只有一個直接基類的情況稱為單繼承( singleinheritance)。 基類 1 基類 2 …… 基類 n 派生類 1 派生類 2 基類 派生類 1 派生類 2 ( a)多重繼承 ( b)單繼承 圖 多重繼承與單繼承 一個基類可以直接派生出多個派生類 派生類可以由多個基類共同派生出來,稱多重繼承。 訪問限定符: 基類名前的訪問限定符,是對基類成員進(jìn)一步的限制。放在后面討論。派生類成員也包括取代基類成員的更新成員。 繼承與派生的概念 類的派生與繼承 8. 公有派生與私有派生 派生類的定義: class 派生類名:訪問限定符 基類名 1《 ,訪問限定符 基類名 2, …… ,訪問限定符 基類名 n》 { 《 《 private: 》 成員表 1; 》 //派生類增加或替代的私有成員 《 public: 成員表 2; 》 //派生類增加或替代的公有成員 《 protected: 成員表 3; 》 //派生類增加或替代的保護(hù)成員 }; //分號不可少 其中基類 1,基類 2, …… 是已聲明的類。 層次概念: 派生反映了事物之間的聯(lián)系,事物的共性與個性之間的關(guān)系。 基類和派生類的集合稱作 類繼承層次結(jié)構(gòu) ( hierarchy)。 C++通過 類派生 ( class derivation)的機(jī)制來支持繼承。 第八章 繼承與多態(tài) 繼承與派生的概念 虛基類 (選讀) 多重繼承與派生類成員標(biāo)識 (選讀 ) 8. 6 多態(tài)性與虛函數(shù) 派生類應(yīng)用討論 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) 附錄: UML類圖中的依賴關(guān)系 附錄:用 UML類圖表示派生 繼承與派生的概念 層次概念 是計(jì)算機(jī)的重要概念。后者亦稱運(yùn)行時的多態(tài)性,這是以虛函數(shù)為基礎(chǔ)的,是面向?qū)ο蟪绦蛟O(shè)計(jì)的標(biāo)志性特征。 第八章 繼承與多態(tài) 多態(tài)性 (polymorphism): 多態(tài)性包括靜態(tài)的多態(tài)性和動態(tài)的多態(tài)性。繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的層次結(jié)構(gòu)。繼承 (inheritance): 該機(jī)制是面向?qū)ο蟪绦蛟O(shè)計(jì)使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進(jìn)行擴(kuò)展,增加功能。 這樣產(chǎn)生新的類,稱派生類。 體現(xiàn)了由簡單到復(fù)雜的認(rèn)識過程 。前者亦稱編譯時的多態(tài)性,包括函數(shù)的重載和運(yùn)算符的重載。 體現(xiàn)了類推和比喻的思想方法。通過 繼承 ( inheritance)的機(jī)制可對類( class)分層,提供類型 /子類型的關(guān)系。被繼承的類稱為 基類 ( base class)或 超類 ( superclass),新的類為 派生類 ( derived class)或 子類 ( subclass)。 如果基類和派生類共享相同的公有接口,則派生類被稱作基類的子類型( subtype)。 派生與獨(dú)立設(shè)計(jì)若干相關(guān)的類,前者工作量少,重復(fù)的部分可以從基類繼承來,不需要單獨(dú) 編程 。 在派生類定義的類體中給出的成員稱為 派生類成員 ,它們是新增加成員,它們給派生類添加了不同于基類的新的屬性和功能。 類的派生與繼承 類的派生與繼承 訪問限定符兩方面含義: 派生類成員(新增成員)函數(shù)對基類(繼承來的)成員的訪問(調(diào)用和操作) ,和 從派生類對象之外對派生類對象中的基類成員的訪問 。 公有派生限制最少,是派生的主流。訪問控制也是三種: 公有( public)方式,亦稱公有繼承 保護(hù)( protected)方式,亦稱保護(hù)繼承 私有( private)方式, 亦稱私有繼承。 類的派生與繼承 多重繼承: 如果一個派生類可以同時有多個基類,稱為多重繼承( multipleinheritance),這時的派生類同時得到了多個已有類的特征。 類的派生與繼承 在派生過程中,派生出來的新類同樣可以作為基類再繼續(xù)派生出更新的類,依此類推形成一個層次結(jié)構(gòu)。 類族: 同時一個基類可以直接派生出多個派生類。如 MFC就是這樣的族類,它由一個 CObject類派生出 200個 MFC類中的絕大多數(shù)。 派生編程步驟: 類的派生與繼承 第二步中, 新成員 如是成員函數(shù),參數(shù)表和返回值也完全一樣,稱為同名覆蓋 (Override),否則是重載 。 第四步是重寫構(gòu)造函數(shù)與析構(gòu)函數(shù),派生類不繼承這兩種函數(shù)。 方式類似聚合 ——含成員對象的類的構(gòu)造函數(shù) 。 【 例 】 由在冊人員類公有派生學(xué)生類 【 例 】 由在冊人員類公有派生學(xué)生類。 基類: class Person{ string IdPerson。 //姓名 Tsex Sex。 int Birthday。 //家庭地址 public: Person(string, string,Tsex,int, string)。 //默認(rèn)的構(gòu)造函數(shù) ~Person()。 //修改名字 string GetName(){return Name。} //修改性別 Tsex GetSex(){return Sex。}//修改身份證號 string GetId(){return IdPerson。} //修改生日 int GetBirth(){return Birthday。 //修改住址 string GetHomeAdd(){return HomeAddress。 //輸出個人信息 }。 //學(xué)號 course cs[30]。 //注意 派生類構(gòu)造函數(shù) 聲明方式 Student()。 //派生類析構(gòu)函數(shù) SetCourse(string ,int)。 //查找成績 void PrintStudentInfo()。 struct course{ string coursename。}。如使用動態(tài)生成的 C風(fēng)格字符串,要考慮深復(fù)制,那要復(fù)雜得多。在一個有層次結(jié)構(gòu)的類體系中資源的動態(tài)分配與釋放應(yīng)封裝在成員對象中 ,如同使用標(biāo)準(zhǔn)的 string字符串類那樣。采用成員對象將大大簡化層次結(jié)構(gòu)的類體系中資源的動態(tài)分配與釋放的處理方法,不再出現(xiàn)難度極大的多層次的深復(fù)制。 下面進(jìn)行詳細(xì)討論: 公有派生與私有派生 不可直接訪問 不可直接訪問 private 不可直接訪問 private protected 不可直接訪問 private public 私有派生 所有接口必須重寫 不可直接訪問 不可直接訪問 private 不可直接訪問 protected protected 可直接訪問 public public 公有派生 所有接口均可使用 在派生類對象外訪問派生類對象的基類成員 在派生類中對基類成員的訪問限定 基類中的訪問限定 派生方式 公有派生是絕對主流 。但在派生類對象之外是不能直接訪問該對象的任何基類成員的。 多層派生: 把保護(hù)派生類作為基類或把私有派生類作為基類再作一層保護(hù)派生。 但在該類對象之外都不可直接訪問類對象底層基類的公有成員。 派生類構(gòu)造函數(shù)的定義: 派生類名 ::派生類名(參數(shù)總表) :基類名 1(參數(shù)名表 1)《 ,基類名 2(參數(shù)名表 2), …… ,基類名 n(參數(shù)名表n) 》 , 《 成員對象名 1(成員對象參數(shù)名表 1), …… ,成員對象名 m(成員對象參數(shù)名表 m) 》 { …… //派生類新增成員的初始化; } //所列出的成員對象名全部為新增成員對象的名字 注意: 在構(gòu)造函數(shù)的聲明中,冒號及冒號以后部分必須略去。 基類名僅指直接基類,寫了底層基類,編譯器認(rèn)為出錯 。 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) 派生類構(gòu)造函數(shù)各部分執(zhí)行次序: ,按它們在派生類定義的先后順序,順序調(diào)用。 。 如果基類沒有定義構(gòu)造函數(shù),則派生類也可以不定義,全部采用系統(tǒng)給定的默認(rèn)構(gòu)造函數(shù)。 派生類的構(gòu)造函數(shù)與析構(gòu)函數(shù) 析構(gòu)函數(shù): 析構(gòu)函數(shù) 的功能是作善后工作。 析構(gòu)函數(shù)各部分執(zhí)行次序與構(gòu)造函數(shù)相反, 首先對派生類新增一般成員析構(gòu),然后對新增對象成員析構(gòu),最后對基類成員析構(gòu) 。 多重繼承與派生類成員標(biāo)識(選讀) 歧義性問題 : 參見圖 ,比如行政人員兼教師,在其基類教師中有一個“教職工編號”,另一基類行政人員中也有一個“教職工編號”,如果只講教職工編號那么是哪一個基類中的呢?這兩者可能是一回事,但 計(jì)算機(jī)系統(tǒng)并不這么認(rèn)為 。 唯一標(biāo)識問題: 通常采用作用域分辨符“ ::”: 基類名 ::成員名 。 //函數(shù)成員 class EGStudent int No 在職學(xué)號 ……… class GStudent int No 研究生號 …… … . class Student int No 學(xué)生號 ……… . class Person int No 身份證號 …… … . class Employee int No 工作證號 …… … . class Person int No 身份證號 …… … . 圖 ( a)在職研究生派生類關(guān)系 定義 EGStudent類對象 EGStudent1,并假定派生全部為公有派生, 而 int No全為公有成員 : //在職學(xué)號 ::No //研究生號 ::No //學(xué)生號 . Person::No //身份證號
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1