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

正文內(nèi)容

清華大學(xué)c課件第7章-資料下載頁

2024-10-16 13:37本頁面
  

【正文】 函數(shù)的調(diào)用被忽略。 虛 基 類 C++語言程序設(shè)計 清華大學(xué) 鄭莉 60 有虛基類時的構(gòu)造函數(shù)舉例 虛 基 類 include iostream using namespace std。 class Base0 { //定義基類 Base0 public: Base0(int var) : var0(var) { } int var0。 void fun0() { cout Member of Base0 endl。 } }。 class Base1: virtual public Base0 { //定義派生類 Base1 public: //新增外部接口 Base1(int var) : Base0(var) { } int var1。 }。 class Base2: virtual public Base0 { //定義派生類 Base2 public: //新增外部接口 Base2(int var) : Base0(var) { } int var2。 }。 class Derived: public Base1, public Base2 { //定義派生類 Derived public: //新增外部接口 Derived(int var) : Base0(var), Base1(var), Base2(var) { } int var。 void fun() { cout Member of Derived endl。 } }。 int main() { //程序主函數(shù) Derived d(1)。 //定義 Derived類對象 d = 2。 //直接訪問虛基類的數(shù)據(jù)成員 ()。 //直接訪問虛基類的函數(shù)成員 return 0。 } 61 C++語言程序設(shè)計 清華大學(xué) 鄭莉 組合與繼承 ? 組合與繼承:通過已有類來構(gòu)造新類的兩種基本方式 ? 組合: B類中存在一個 A類型的內(nèi)嵌對象 – 有一個( hasa)關(guān)系:表明每個 B類型對象“有一個” A類型對象 – A類型對象與 B類型對象是部分與整體關(guān)系 – B類型的接口不會直接作為 A類型的接口 62 深 度 探 索 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)動功能,但通過將這些功能的整合,具有了自己的功能 ——移動 63 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 公有繼承的意義 ? 公有繼承: A類是 B類的公有基類 – 是一個( isa)關(guān)系:表明每個 B類型對象“是一個” A類型對象 – A類型對象與 B類型對象是一般與特殊關(guān)系 ?回顧類的兼容性原則:在需要基類對象的任何地方,都可以使用公有派生類的對象來替代 – B類型對象包括 A類型的全部接口 64 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 “ isa”舉例 class Truck: public Automobile{ //卡車 public: void load(?)。 //裝貨 void dump(?)。 //卸貨 private: ?? }。 class Pumper: public Automobile { //消防車 public: void water()。 //噴水 private: ?? }。 ? 意義 – 卡車是汽車 – 消防車是汽車 ? 接口 – 卡車和消防車具有汽車的通用功能(移動) – 它們還各自具有自己的功能(卡車:裝貨、卸貨;消防車:噴水) 65 深 度 探 索 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ù) 66 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 單繼承情形 class Base { ? }。 class Derived: public Base { ? }。 Derived *pd = new Derived()。 Base *pb = pd。 67 Derived類型指針 pd轉(zhuǎn)換為 Base類型指針 時,地址不需要改變 Base類 數(shù)據(jù)成員 Derived類新增 數(shù)據(jù)成員 pb, pd Derived對象 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 多繼承情形 class Base1 { ? }。 class Base2 { ? }。 class Derived: public Base1, public Base2 { ? }。 Derived *pd = new Derived()。 Base1 *pb1 = pd。 Base2 *pb2 = pd。 68 Derived類型指針 pd轉(zhuǎn)換為 Base2類型指針 時,原地址需要增加一個偏移量 Base1類 數(shù)據(jù)成員 Base2類 數(shù)據(jù)成員 pb1, pd Derived對象 pb2 Derived類新增 數(shù)據(jù)成員 深 度 探 索 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。 69 Base0類 數(shù)據(jù)成員 Base1類新增 數(shù)據(jù)成員 pb1, pd Base0指針 Base2類新增 數(shù)據(jù)成員 Base0指針 Derived對象 pb2 pb0 通過指針間接訪問虛基類的數(shù)據(jù)成員 深 度 探 索 C++語言程序設(shè)計 清華大學(xué) 鄭莉 73 小結(jié)與復(fù)習(xí)建議 ? 主要內(nèi)容 – 類的繼承、類成員的訪問控制、單繼承與多繼承、派生類的構(gòu)造和析構(gòu)函數(shù)、類成員的標識與訪問 ? 達到的目標 – 理解類的繼承關(guān)系,學(xué)會使用繼承關(guān)系實現(xiàn)代碼的重用。 ? 實驗任務(wù) – 實驗七
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1