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

正文內(nèi)容

[計算機]c課件第八講v(編輯修改稿)

2024-11-15 03:41 本頁面
 

【文章內(nèi)容簡介】 。 (a,b)。 cout圓錐底圓心坐標 :(a39。,39。b)\n。 cout圓錐高 :()39。\n39。 return 0。 } 檢證主程序: 【 例 】 由圓和高多重繼承派生出圓錐 Page 40 計算機基礎(chǔ)教研室 虛基類的引入: 在圖 ,兩個身份證號顯然是不合理的。可以把class Person這個共同基類設(shè)置為 虛基類 ,這樣就僅有一個 Person基類成員,從不同路徑繼承來的同名數(shù)據(jù)成員( 身份證號 )在內(nèi)存中就是同一個數(shù)據(jù)。 虛基類(選讀) Page 41 計算機基礎(chǔ)教研室 注意: virtual 關(guān)鍵字只對緊隨其后的基類名起作用 : class Student:virtual public Person{...}。 class Employee:virtual public Person{...}。 虛基類 (virtual base class)定義: class 派生類名 :virtual 訪問限定符 基類類名 {...}。 class 派生類名 :訪問限定符 virtual 基類類名 {...}。 虛基類(選讀) Page 42 計算機基礎(chǔ)教研室 虛基類(選讀) 圖 采用虛基類后在職研究生類儲存圖 Student GStudent EGStudent Person Student新成員 GStudent新成員 Person Employee新成員 Person成員 EGStudent新成員 Person Person Employee 這種繼承稱為虛擬繼承 虛擬繼承: 在 Person的位置上放的是指針 , 兩個指針都指向Person成員存儲的內(nèi)存 。這種繼承稱為 虛擬繼承( virtual inheritance)。 Page 43 計算機基礎(chǔ)教研室 虛基類(選讀) 派生類名 ::派生類名 (參數(shù)總表 ):基類名 1(參數(shù)名表 1)《 ,基類名 2(參數(shù)名表 2),…… ,基類名 n(參數(shù)名表 n)》 ,《 成員對象名 1(成員對象參數(shù)名表 1),…… ,成員對象名 m(成員對象參數(shù)名表 m)》 , 底層虛基類名 1(參數(shù)名表 1)《 ,…… , 底層虛基類名 r(參數(shù)名表 r)》 { …… //派生類新增成員的初始化 }。 //所列出的成員對象名全部為新增成員對象的名字 在多層虛擬繼承構(gòu)造函數(shù)中,基類名不僅要列出直接基類,而且要列出底層虛基類,否則編譯器認為出錯。 如不是虛擬繼承只能列直接基類。 虛擬繼承的構(gòu)造函數(shù): Page 44 計算機基礎(chǔ)教研室 虛基類(選讀) 在派生類對象的 創(chuàng)建 中: 首先是虛基類的構(gòu)造函數(shù)并按它們聲明的順序構(gòu)造。 第二批是非虛基類的構(gòu)造函數(shù)按它們聲明的順序調(diào)用。 第三批是成員對象的構(gòu)造函數(shù)。 最后是派生類自己的構(gòu)造函數(shù)被調(diào)用。 構(gòu)造函數(shù)執(zhí)行次序: Page 45 計算機基礎(chǔ)教研室 虛基類(選讀) 【 例 】 在采用虛基類的多重繼承中構(gòu)造與析構(gòu)的次序。 class Object{ public: Object(){coutconstructor Object\n。} ~Object(){coutdeconstructor Object\n。}}。 class Bclass1{ public: Bclass1(){coutconstructor Bclass1\n。} ~Bclass1(){coutdeconstructor Bclass1\n。}}。 class Bclass2{ public: Bclass2(){coutconstructor Bclass2\n。} ~Bclass2(){coutdeconstructor Bclass2\n。}}。 Page 46 計算機基礎(chǔ)教研室 【 例 】 在采用虛基類的多重繼承中,構(gòu)造與析構(gòu)的次序。 class Bclass3{ public: Bclass3(){coutconstructor Bclass3\n。} ~Bclass3(){coutdeconstructor Bclass3\n。}}。 class Dclass:public Bclass1,virtual Bclass3,virtual Bclass2{ Object object。 public: Dclass():object(),Bclass2(),Bclass3(),Bclass1(){ cout派生類建立 !\n。} ~Dclass(){cout派生類析構(gòu) !\n。} }。 int main(){ Dclass dd。 cout“主程序運行 !\n”。return 0; } 虛基類(選讀) Page 47 計算機基礎(chǔ)教研室 運行結(jié)果: Constructor Bclass3 //第一個虛擬基類 ,與派生類析構(gòu)函數(shù)排列無關(guān) Constructor Bclass2 //第二個虛擬基類 Constructor Bclass1 //非虛擬基類 Constructor Object //對象成員 派生類建立 ! 主程序運行 ! 派生類析構(gòu) ! deconstructor Object //析構(gòu)次序相反 deconstructor Bclass1 deconstructor Bclass2 deconstructor Bclass3 //析構(gòu)的次序與構(gòu)造的次序相反。 虛基類(選讀) Page 48 計算機基礎(chǔ)教研室 對照圖 ,盡管 Employee和 Student的構(gòu)造函數(shù)都包含 Person的構(gòu)造函數(shù),但并未真正調(diào)用。唯一的一次調(diào)用是在 EGStudent構(gòu)造函數(shù)中 。如是非虛基類,則有兩次調(diào)用。 【 例 】 虛基類在多層多重繼承中的應用 ——在職研究生類定義。 以虛基類定義公有派生的學生類 以虛基類定義公有派生的研究生類 以虛基類定義公有派生的教職工類 多重繼承的以虛基類定義 公有派生的在職研究生類 虛基類(選讀) Page 49 計算機基礎(chǔ)教研室 class Student:public virtual Person{ string NoStudent。 //學號 //30門課程與成績略 public: Student(string id, string name,Tsex sex,int birthday, string homeadd, string nostud)。 Student()。 ~Student(){cout析構(gòu) Studentendl。} void PrintStudentInfo()。 }。 Student::Student(string id, string name,Tsex sex, int birthday, string homeadd, string nostud) :Person(id,name,sex,birthday,homeadd){ //注意 Person參數(shù)名表不用類型 cout構(gòu)造 Studentendl。 NoStudent=nostud。} [例 ] 虛基類與在職研究生 以虛基類定義公有派生的學生類: Page 50 計算機基礎(chǔ)教研室 Student::Student(){ //基類默認的無參數(shù)構(gòu)造函數(shù)不必顯式給出 cout構(gòu)造 Studentendl。 } void Student::PrintStudentInfo(){ cout學號 :NoStudent39。\n39。 PrintPersonInfo()。 } 以虛基類定義公有派生的學生類: [例 ] 虛基類與在職研究生 Page 51 計算機基礎(chǔ)教研室 class GStudent:public Student{ //以虛基類定義公有派生的研究生類 string NoGStudent。 //研究生號,其他略 public: GStudent(string id, string name,Tsex sex,int birthday, string homeadd, string nostud,string nogstudent)。 //注意派生類構(gòu)造函數(shù)聲明方式 GStudent()。 ~GStudent(){cout析構(gòu) GStudentendl。}。 void PrintGStudentInfo()。}。 GStudent::GStudent(string id, string name,Tsex sex, int birthday, string homeadd, string nostud, string nogstud): Student(id,name,sex,birthday,homeadd,nostud), Person(id,name,sex,birthday,homeadd){ //因 Person是虛基類 ,盡管不是直接基類 , Person必須出現(xiàn)。 //不定義對象可不出現(xiàn),為通用應出現(xiàn)。如不是虛基類,出現(xiàn)是錯誤的 cout構(gòu)造 GStudentendl。 NoGStudent=nogstud。} [例 ] 虛基類與在職研究生 以虛基類定義公有派生的研究生類: Page 52 計算機基礎(chǔ)教研室 GStudent::GStudent(){ //基類默認的無參數(shù)構(gòu)造函數(shù)不必顯式給出 cout構(gòu)造 GStudentendl。 } void GStudent::PrintGStudentInfo(){ cout研究生號 :NoGStudent39。\n39。 PrintStudentInfo()。 } [例 ] 虛基類與在職研究生 以虛基類定義公有派生的研究生類: Page 53 計算機基礎(chǔ)教研室 [例 ] 虛基類與在職研究生 class Employee:public virtual Person{ string NoEmployee。 //教職工號,其他略 public: Employee(string id, string name,Tsex sex,int birthday, string homeadd, string noempl)。 Employee()。 ~Employee(){cout析構(gòu) Employeeendl。} void PrintEmployeeInfo()。 void PrintEmployeeInfo1()。//多重繼承時避免重復打印虛基類 Person的信息 }。 Employee::Employee(string id, string name,Tsex sex,int birthday, string homeadd, string noempl) :Person(id,name,sex,birthday,homeadd){ cout構(gòu)造 Employeeendl。 NoEmployee=noempl。 } 以虛基類定義公有派生的教職工類: Page 54 計算機基礎(chǔ)教研室 [例 ] 虛基類與在職研究生 Employee::Employee(){ //基類默認的無參數(shù)構(gòu)造函數(shù)不必顯式給出 cout構(gòu)造 Employeeendl。 } void Employee::PrintEmployeeInfo(){ cout教職工號 :NoEmployee39。\n39。 PrintPersonInfo()。 } void Employee::PrintEmployeeInfo1(){ cout
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1