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

正文內(nèi)容

面向?qū)ο蟮某绦蛟O計語言(參考版)

2025-01-10 01:58本頁面
  

【正文】 class D1: virtual public B {protected: int d1。 public: B(int bval=0) 返回 94 繼承和派生 { b=bval。 將一個基類聲明為虛基類必須在各派生類定義時 , 在基類的名稱前面加上關鍵字 virtual, 格式如下: class 派生類名: virtual public 基類名 { //聲明派生類成員 }; 返回 93 繼承和派生 使用虛基類時 , 要特別注意派生類的構(gòu)造函數(shù) , 對于普通基類 , 派生類的構(gòu)造函數(shù)負責調(diào)用其直接基類的構(gòu)造函數(shù)以初始化其直接基類的數(shù)據(jù)成員 , 而對于虛基類的任何派生類 , 其構(gòu)造函數(shù)不僅負責調(diào)用直接基類的構(gòu)造函數(shù) ,還需調(diào)用虛基類的構(gòu)造函數(shù) , 如圖 , 若基類 B被聲明為虛基類 , 則派生類 D3負責調(diào)用三個基類( 直接基類 D D2和虛基類 B) 的構(gòu)造函數(shù) , 而派生類D1和 D2不會調(diào)用虛基類 B的構(gòu)造函數(shù) , 只由最終端的派生類 D3負責調(diào)用虛基類的構(gòu)造函數(shù) 。 B B D1 D2 D3 圖 多重繼承的二義性 返回 92 繼承和派生 從上圖可以看出:派生類 D3中將繼承兩份類 B的成員 ,一份由類 D1派生得到 , 另一份由 D2派生而來 , 這時通過派生類 D3的對象訪問類 D1和 D2的成員不會有問題 , 但訪問類 B的成員就會出現(xiàn)模棱兩可的現(xiàn)象 , 編譯程序不知道到底要訪問哪一份的成員 , C++為此提供了虛基類 , 以解決這種二義性 。} void main() { D dobj(1,2,3)。 D::D(int val1, int val2, int val3):B1(val1),B2(val2) //如改為 D::D(int val1, int val2, int val3): B2(val2), B1(val1)效果一樣 { d=val3。 返回 90 繼承和派生 public: D(int val1, int val2, int val3)。 } }。 public: B2(int val2) { b2=val2。 } }。 public: B1(int val1) { b1=val1。 返回 88 繼承和派生 【 例 311】 測試多重繼承關系下 , 基類和派生類的構(gòu)造函數(shù)的執(zhí)行順序 。 多重繼承下派生類的構(gòu)造函數(shù)必須同時負責所有基類構(gòu) 返回 87 繼承和派生 造函數(shù)的調(diào)用 , 對于派生類構(gòu)造函數(shù)的參數(shù)個數(shù)必須同時滿足多個基類初始化的需要 。 在 C++中不僅支持單一繼承 , 而且也支持多重繼承 , 所謂 多重繼承 , 是指派生類從多個基類中派生而來 , 使派生類繼承多個基類的特征 ,在多重繼承關系中 , 派生類有多個直接基類 。 ( 3) 使用作用域運算符 “ ::”進行區(qū)分 , 如: Ccircle::area() 以上三種區(qū)分方法都是在程序編譯過程中完成的 , 稱為靜態(tài)聯(lián)編 , 除此之外 , C++還提供稱為動態(tài)聯(lián)編 。 如: max(int,int) max(float,float) ( 2) 根據(jù)類對象進行區(qū)分 。 返回 85 繼承和派生 通過以上分析可知 , C++中處理同名函數(shù)有以下 3種基本方法: ( 1) 根據(jù)函數(shù)的參數(shù)的特征進行區(qū)分 。 這樣 , 當通過派生類對象調(diào)用 area()函數(shù)時 , C++編譯器將沿繼承關系搜索 , 使用離調(diào)用對象最近的那個版本的函數(shù) 。 ( 2) 由于繼承關系 , 在類 Ccylinder中存在兩個同名的函數(shù) arear()。 因此 , 在派生類 Ccylinder中重新定義了基類成員函數(shù)area()。 cout圓的面積是: ()。 cout圓柱體表面積 :()endl。 } 返回 83 繼承和派生 void main() {Ccircle circle(10)。 } }。 } double getheight() const { return height。 public: Ccylinder(double radiusval, double heightval)。 } }。 } double getradius() const { return radius 。 public: Ccircle(double radiusval) { radius=radiusval。 如: 【 例 310】 本例中分別定義一個描述圓的類 Ccircle和描述一個圓柱體的類 Ccylinder。 而系統(tǒng)執(zhí)行析構(gòu)函數(shù)的順序恰恰相反 , 即先執(zhí)行派生類的析構(gòu)函數(shù) , 再執(zhí)行基類的析構(gòu)函數(shù) 。 返回 79 繼承和派生 ( 5) 基類的對象只能調(diào)用基類的成員函數(shù) , 不能調(diào)用派生類的成員函數(shù) 。 所以派生類的構(gòu)造函數(shù)的定義格式如下: 派生類名::派生類構(gòu)造函數(shù)名 ( 參數(shù)表 ) :基類構(gòu)造函數(shù)名 ( 參數(shù)表 ) { ?? } ( 4) 雖然派生類可以直接訪問基類的保護數(shù)據(jù)成員 , 甚至在構(gòu)造時初始化它們 , 但是一般不這么做 , 而是通過基類的接口 ( 成員函數(shù) ) 去訪問它們 , 初始化也是通過基類的構(gòu)造函數(shù) 。 ( 2) 通過派生類的對象調(diào)用一個被重新定義過的基類的成員函數(shù) , 所調(diào)用的是派生類的成員函數(shù) , 此時 , 若想調(diào)用基類的成員函數(shù) , 必須在成員函數(shù)名前加基類名作用域分隔符 “ :: ” 。 返回 77 繼承和派生 3. 派生類的數(shù)據(jù)成員和成員函數(shù) 、 構(gòu)造過程與構(gòu)造函數(shù) ( 1) 派生類的數(shù)據(jù)成員和成員函數(shù)的來源有兩個 , 一個來源是從基類繼承來的數(shù)據(jù)成員和成員函數(shù) , 對于繼承來的數(shù)據(jù)成員 , 即使沒有用也不能取消 , 只能不理會它們 , 但允許對一些繼承來的成員函數(shù)重新定義 , 即在原有基類的成員函數(shù)的基礎上 , 再增加一些操作 , 以完成派生類所要求的操作 。 ()。 (100,200,300)。 } }。 cout 高度: heightendl。} void disp() { cout\n 經(jīng)度: posi_xendl。 //定義派生類 Build_2 class Build_2 : public Build_1 返回 75 繼承和派生 { int height。 area=a。 public: void set1(int x, int y, int a) { posi_x=x。 // 有三個保護型的數(shù)據(jù)成員 int posi_y。 讓 Build_1作為基類 , 再增加數(shù)據(jù)成員 high、 函數(shù)成員 set2和 disp來定義派生類Build_2。 它的數(shù)據(jù)成員有 posi_x、 posi_y和 area, 分別是樓房位置的經(jīng) 、 緯度和建筑面積 。 基類 公有派生類 私有派生類 public成員 public成員 private成員 protected成員 protected成員 private成員 private成員 無法繼承 無法繼承 返回 73 繼承和派生 ( 3) 在 C++中 , 可以根據(jù)需要定義多層的繼承關系 , 也可以從一個基類派生出多個類 , 形成類的層次結(jié)構(gòu) , 在類的層次結(jié)構(gòu)中 , 處于高層的類 , 表示最一般的特征 ,而處于底層的類 , 表示更具體的特征 , 在多層繼承關系中 , 基類與派生類的關系是相對的 , 例如:由類 A派生出類 B, 再由類 B派生出類 C, 這里類 B相對于類 A是派生類 ,而相對于類 C是基類 , 并稱類 C是類 A的間接派生類 , 稱類 A是類 C 的間接基類;而稱具有直接派生關系的兩個類分別為直接派生類和直接基類 。 某個類的私有成員只能被該類的成員函數(shù)所訪問 , 而類的不可訪問成員甚至不能被該類自身的成員函數(shù)所訪問 。 ④ 在公有繼承方式下 , 基類的公有成員和保護成員被繼承為派生類成員時 , 基訪問屬性不變 。 返回 72 繼承和派生 ③ 無論哪種繼承方式 , 基類的私有成員均不能繼承 。 ( 2) C++關于類的繼承方式的規(guī)定 , 如下表 : ① 按 private方式繼承 ( 即私有繼承 ) 時 , 基類中的公有成員和保護成員在派生類中皆變?yōu)樗接谐蓡T 。 ( 5) 大括號內(nèi)的部分是派生類中新定義的成員 。 訪問方式為 public方式時 , 這種繼承稱為公有繼承 , 而訪問方式為 private方式時 , 稱為私有繼承; ( 3) 基類名必須是程序中一個已有的類 。 由此可見 , 派生類既可以對基類的性質(zhì)進行擴展 , 又可以進行限制 , 從而得到更加靈活 、 更加適用的可重用模塊 , 大大縮短程序的開發(fā)時間 。 派生類不僅可以繼承原來類的成員 , 還可以通過以下方式產(chǎn)生新的成員: 返回 69 繼承和派生 ( 1) 增加新的數(shù)據(jù)成員; ( 2) 增加新的成員函數(shù); ( 3) 重新定義已有成員函數(shù); ( 4) 改變現(xiàn)有成員的屬性 。 所以說 , 繼承是面向?qū)ο蟪绦蛟O計的一個重要機制 。 所謂 繼承 ( inheritance) 就是利用已有的數(shù)據(jù)類型定義出新的數(shù)據(jù)類型 。與 ptestmyfunc()。 當通過對象名時 , 應使用圓點成員選擇符 “ .”;當通過指針時 ,應使用箭頭成員選擇符 “ ”。 如:上例中的 myfunc()函數(shù)中定義了與類的數(shù)據(jù)成員同名的局部變量 x、 y, 所以在 myfunc()函數(shù)中要訪問類中的數(shù)據(jù)成員 x和 y的值時 , 必須加上作用域運算符 。 返回 67 構(gòu)造函數(shù)與析構(gòu)函數(shù) ( 2) 類中的成員擁有類作用域 , 因此在成員函數(shù)中可以直接引用類的數(shù)據(jù)成員 。 } 程序的運行結(jié)果為: x=100,y=200 In myfunc: x=9,y=10 Myclass::x=100,Myclass::y=200 說明: ( 1) 類成員函數(shù)的原型在類的定義體中聲明 , 具有類作用域 , 但其實現(xiàn)部分在類的定義體外 。 ()。 } 返回 66 構(gòu)造函數(shù)與析構(gòu)函數(shù) void main() { Myclass test(100,200), *ptest=amp。 coutIn myfunc: x=x,y=yendl。 返回 65 構(gòu)造函數(shù)與析構(gòu)函數(shù) void Myclass::print() { coutx=x,y=yendl。 void myfunc()。y=b。 int y。 返回 64 構(gòu)造函數(shù)與析構(gòu)函數(shù) 【 例 39】 類域及其成員引用舉例 ,設以下程序代碼被存放到了一個程序文件中。 但是 , 在類域中定義的變量不能使用 auto、register和 extern等修飾符 , 而且在類域中定義的函數(shù)也不能使用 extern修飾符 。 由于在程序文件中可包含類 , 而類中又包含函數(shù) , 因此 , 類域顯然是一個小于文件域 ,而大于函數(shù)域的概念 。 //調(diào)用 show顯示 x的值 ()。 void employee :: show() { cout \n x的值是: x endl。 }。 public: employee ()。 程序中使用初始化表是 x(215)。 2. 解決以上問題的方法是利用初始化表:在構(gòu)造函數(shù)的括號后面加一 “ : ” 和初始化表 , 初始化表的格式是: 數(shù)據(jù)成員名 ( 值 ) , 如果有多個時 , 需要用逗號隔開 。 //引用 refi }。 //常量數(shù)據(jù)成員 ten int amp。 refi=i。s) } 執(zhí)行結(jié)果如下: 構(gòu)造新同學: No name 構(gòu)造新同學: zhang 構(gòu)造 copy of zhang 返回 59 構(gòu)造函數(shù)與析構(gòu)函數(shù) 構(gòu)造指導教師 析構(gòu) copy of zhang 析構(gòu) zhang 析構(gòu) No name 利用初始化表對常量數(shù)據(jù)成員或引用成員提供初值 如前所述 , 構(gòu)造函數(shù)可對對象的數(shù)據(jù)成員進行初始化 ,但若數(shù)據(jù)成員為常量成員或引用成員時 , 就有所不同 , 如: class Sillyclass { public : Sillyclass() // 此構(gòu)造函數(shù)對成員 ten和 refi的初始化錯誤 。 //此處調(diào)用 Tut
點擊復制文檔內(nèi)容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1