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

正文內(nèi)容

所有分類cppt課件-資料下載頁

2024-11-03 21:46本頁面
  

【正文】 int var。 void fun() { cout Member of Derived“ endl。} }。//end class Derived void main(void) {//主函數(shù) Derived d(1)。 //定義 Derived類對象 d = 2。 //直接訪問虛基類的數(shù)據(jù)成員 ()。 //直接訪問虛基類的函數(shù)成員 }//main 59 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 組合與繼承 ? 組合與繼承:通過已有類來構(gòu)造新類的兩種基本方式 ? 組合: B類中存在一個 A類型的內(nèi)嵌對象 – 有一個( hasa)關(guān)系:表明每個 B類型對象“有一個” A類型對象 – A類型對象與 B類型對象是部分與整體關(guān)系 – A類型的接口不會直接作為 B類型的接口 60 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 “ hasa”舉例 class Engine { //發(fā)動機類 public: void work()。 //發(fā)動機運轉(zhuǎn) ?? }。 class Wheel { //輪子類 public: void roll()。 //輪子轉(zhuǎn)動 ?? }。 class Automobile { //汽車類 public: void move()。 //汽車移動 private: Engine engine。 //汽車引擎 Wheel wheels[4]。 //4個車輪 ?? }。 ? 意義 – 一輛汽車有一個發(fā)動機 – 一輛汽車有四個輪子 ? 接口 – 作為整體的汽車不再具備發(fā)動機的運轉(zhuǎn)功能,和輪子的轉(zhuǎn)動功能,但通過將這些功能的整合,具有了自己的功能 ——移動 61 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 公有繼承的意義 ? 公有繼承: A類是 B類的公有基類 – 是一個( isa)關(guān)系:表明每個 B類型對象“是一個” A類型對象 – A類型對象與 B類型對象是一般與特殊關(guān)系 ?回顧類的兼容性原則:在需要基類對象的任何地方,都可以使用公有派生類的對象來替代 – B類型對象包括 A類型的全部接口 62 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 “ isa”舉例 //卡車: class Truck: public Automobile{ public: void load(?)。 //裝貨 void dump(?)。 //卸貨 private: ?? }。 //消防車: class Pumper: public Automobile{ public: void water()。 //噴水 private: ?? }。 ? 意義 – 卡車是汽車 – 消防車是汽車 ? 接口 – 卡車和消防車具有汽車的通用功能(移動) – 它們還各自具有自己的功能(卡車:裝貨、卸貨;消防車:噴水) 63 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 派生類對象的內(nèi)存布局 ? 派生類對象的內(nèi)存布局 – 因編譯器而異 – 內(nèi)存布局應(yīng)使類型兼容規(guī)則便于實現(xiàn) ?一個基類指針,無論其指向基類對象,還是派生類對象,通過它來訪問一個基類中定義的數(shù)據(jù)成員,都可以用相同的步驟 ? 不同情況下的內(nèi)存布局 – 單繼承:基類數(shù)據(jù)在前,派生類新增數(shù)據(jù)在后 – 多繼承:各基類數(shù)據(jù)按順序在前,派生類新增數(shù)據(jù)在后 – 虛繼承:需要增加指針,間接訪虛基類數(shù)據(jù) 64 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 單繼承情形 class Base { ? }。 class Derived: public Base { ? }。 Derived *pd = new Derived()。 Base *pb = pd。 65 Derived類型指針 pd轉(zhuǎn)換為 Base類型指針 時,地址不需要改變 Base類 數(shù)據(jù)成員 Derived類新增 數(shù)據(jù)成員 pb, pd Derived對象 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 多繼承情形 class Base1 { ? }。 class Base2 { ? }。 class Derived: public Base1, public Base2 { ? }。 Derived *pd = new Derived()。 Base1 *pb1 = pd。 Base2 *pb2 = pd。 66 Derived類型指針 pd轉(zhuǎn)換為 Base2類型指針 時,原地址需要增加一個偏移量 Base1類 數(shù)據(jù)成員 Base2類 數(shù)據(jù)成員 pb1, pd Derived對象 pb2 Derived類新增 數(shù)據(jù)成員 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 虛擬繼承情形 class Base0 { ? }。 class Base1: virtual public Base0 { ? }。 class Base2: virtual public Base0 { ? }。 class Derived: public Base1, public Base2 { ? }。 Derived *pd = new Derived()。 Base1 *pb1 = pd。 Base2 *pb2 = pd。 Base0 *pb0 = pb1。 67 Base0類 數(shù)據(jù)成員 Base1類新增 數(shù)據(jù)成員 pb1, pd Base0指針 Base2類新增 數(shù)據(jù)成員 Base0指針 Derived對象 pb2 pb0 通過指針間接訪問虛基類的數(shù)據(jù)成員 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 基類向派生類的轉(zhuǎn)換 ? 基類向派生類的轉(zhuǎn)換 – 基類指針可以轉(zhuǎn)換為派生類指針 – 基類引用可以轉(zhuǎn)換為派生類引用 – 需要用 static_cast顯式轉(zhuǎn)換 ? 例: Base *pb = new Derived()。 Derived *pd = static_castDerived *(pb)。 Derived d。 Base amp。rb = d。 Derived amp。rb = static_castDerived amp。(rb)。 68 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 類型轉(zhuǎn)換時的注意事項 (1) ? 基類對象一般無法被顯式轉(zhuǎn)換為派生類對象 – 對象到對象的轉(zhuǎn)換,需要調(diào)用構(gòu)造函數(shù)創(chuàng)建新的對象 – 派生類的拷貝構(gòu)造函數(shù)無法接受基類對象作為參數(shù) ? 執(zhí)行基類向派生類的轉(zhuǎn)換時,一定要確保被轉(zhuǎn)換的指針和引用所指向或引用的對象符合轉(zhuǎn)換的目的類型: – 對于 Derived *pd = static_castDerived *(pb)。 – 一定要保證 pb所指向的對象具有 Derived類型,或者是 Derived類型的派生類。 69 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 類型轉(zhuǎn)換時的注意事項 (2) ? 如果 A類型是 B類型的虛擬基類, A類型指針無法通過static_cast隱含轉(zhuǎn)換為 B類型的指針 – 可以結(jié)合虛繼承情況下的對象內(nèi)存布局,思考為什么不允許這種轉(zhuǎn)換 ? void指針參加的轉(zhuǎn)換,可能導(dǎo)致不可預(yù)期的后果: – 例:( Base2是 Derived的第二個公共基類) Derived *pd = new Derived()。 void *pv = pd。 //將 Derived指針轉(zhuǎn)換為 void指針 Base2 *pb = static_castBase2 *(pv)。 – 轉(zhuǎn)換后 pb與 pd有相同的地址,而正常的轉(zhuǎn)換下應(yīng)有一個偏移量 – 結(jié)論:有 void指針參與的轉(zhuǎn)換,兼容性規(guī)則不適用 ? 更安全更靈活的基類向派生類轉(zhuǎn)換方式 —— dynamic_cast 70 深 度 探 索 課程 :面向?qū)ο蟪绦蛟O(shè)計基礎(chǔ) /提高( C++) 教材 :《 C++語言程序設(shè)計》;鄭莉等;清華大學(xué)出版 71 小結(jié)與復(fù)習(xí)建議 ? 主要內(nèi)容 – 類的繼承、類成員的訪問控制、單繼承與多繼承、派生類的構(gòu)造和析構(gòu)函數(shù)、類成員的標(biāo)識與訪問 ? 達到的目標(biāo) – 理解類的繼承關(guān)系,學(xué)會使用繼承關(guān)系實現(xiàn)代碼的重用。 ? 作業(yè) – 710, 711, 713 , 715;思考: 712, 714 ? 實驗任務(wù) – 實驗三 (之四 )P287
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1