作业五物件程式实作.ppt

上传人:本田雅阁 文档编号:3378100 上传时间:2019-08-19 格式:PPT 页数:26 大小:106.55KB
返回 下载 相关 举报
作业五物件程式实作.ppt_第1页
第1页 / 共26页
作业五物件程式实作.ppt_第2页
第2页 / 共26页
作业五物件程式实作.ppt_第3页
第3页 / 共26页
作业五物件程式实作.ppt_第4页
第4页 / 共26页
作业五物件程式实作.ppt_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《作业五物件程式实作.ppt》由会员分享,可在线阅读,更多相关《作业五物件程式实作.ppt(26页珍藏版)》请在三一文库上搜索。

1、作業五_物件程式實作,創造類別:父親(Father) 、母親(Mother) 小孩(Child) 、家庭(Family),父親(Father)類別,屬性:姓名、年齡、職業 建構子的型式 Father(string 姓名,int 年齡,string 職業) ex:父親叫John,年齡為45歲,職業是工程師 Father father(“John”,45,”工程師”),母親(Mother)類別,屬性:姓名、年齡 建構子的型式 Mother(string 姓名,int 年齡) ex:母親叫Mary,年齡為42歲 Mother mother(“Mary”,42),小孩(Child)類別,屬性:姓名、年

2、齡、性別 建構子的型式: Child(string 姓名,int 年齡,string 性別) 或是採取 Child(string 姓名,int 年齡,bool 判斷性別方式) 自己選擇如何去判斷性別的方式 ex:小孩叫David,年齡為12歲,是男孩 Child David(“David”,12,”男”) 或是 Child David(“David”,12,true),家庭(Family)類別,類別成員:父親(Father) 、母親(Mother) 許多小孩( vector ) 屬性:小孩個數、男孩個數、女孩個數 建構子:有父母親即可組成一個家庭 Family(父親物件,母親物件) ex:根據

3、之前造出的father,mother物件,來創造一個family物件 Family family(father,mother),家庭(Family)類別,擁有的方法: 增加小孩:可以用兩種方式增加小孩 重載方式 void Add_Child(小孩物件) void Add_Child(名字,年齡,性別) 顯示家庭背景資料:void show(),主程式範例,int main() Father father(“John“,45,“工程師“); Mother mother(“Mary“,42); Child David(“David“,12,true); Child Bill(“Bill“,10,t

4、rue); Family family(father,mother); family.Add_Child(David); family.Add_Child(Bill); family.Add_Child(“Helen“,8,false); family.show(); return 0; ,創造父親和母親的物件,孩子的性別的判斷 自行決定判斷的方式,顯示家庭基本資料,可以用兩種 方式 增加孩子,顯示家庭背景資料的格式,這個家庭除了父親,母親外,還有 3 小孩 父親的名字叫做 John ,年齡為 45 歲,職業為 工程師 母親的名字叫做 Mary ,年齡為 42 歲,育有 2 男, 1 女 第

5、1 位孩子的名字叫做 David , 年齡為 12 歲,性別為 男性 第 2 位孩子的名字叫做 Bill , 年齡為 10 歲,性別為 男性 第 3 位孩子的名字叫做 Helen , 年齡為 8 歲,性別為 女性 ,在標頭檔中儲存類別的定義,將標頭檔放在相同的目錄中,使用標頭檔的方式 include “標頭檔名”,標頭檔中儲存類別的定義 _以作業五為例,若將不同的類別都寫在不同的標頭檔,且標頭檔都放在同一目錄下 則程式開頭需加上 include “Father” include “Mother” include “Child” include “Family”,標頭檔中儲存類別的定義 _以作業

6、五為例,注意: #include #include #include using namespace std; include “Father” include “Mother” include “Child” include “Family”,需放在標頭檔前 若是放在標頭檔後,則每個類別的標頭檔內都要加上include指令,才能使用此函式庫的程式,物件參數的傳遞,函數傳遞參數的方式有傳值、傳址、傳參考 物件傳遞參數的方式建議使用 “ 傳參考” 因為使用傳值方式,需要將記憶體需要複製一樣的物件,而在複製物件的過程相當耗記憶體空間、以及花費程式執行時間,物件參數的傳遞_以作業五為例,Family

7、(父親物件,母親物件) 主程式中創造Family物件 Family family(father,mother) 建構子中: Family:Family(Father & _father, Mother & _mother) /程式內容 ,重載方式以及建構子,可以使用不同的參數來重新定義方法或建構子 compiler根據傳入的參數與數目,來找尋可能匹配的方法與建構子。,重載方式以及建構子_以作業五為例,Class Family void Add_Child(Child Family: Add_Child(Child & _child) /若傳入Child物件的程式做法 Family: Add_C

8、hild(string c_name,int c_age,bool c_sex) /若傳入name,age,sex的程式做法 ,物件和指標,若宣告一個father父親物件指標,並設定初值 物件指標的設定方式與一般指標變數的方法相同 ex: Father father; Father * father_ptr; father_ptr = ,物件和指標,透過物件指標,存取所指向物件的資料成員與成員函數,必須利用 - 運算子 語法 物件指標名稱-成員名稱;,物件和指標_利用 - 運算子,若Father類別有get_Name()成員函式 ex: Father father(“John“,45,“工程師

9、“); Father * father_ptr = father_ptr-get_Name() 以獲得father的名字 (John),使用this指標,this指標將代表物件本身,是一個指向物件自己的指標。 在程式實作上,this指標最常見的用法,為提供物件的成員函數,在被呼叫時,回傳物件本身的記憶體位址。,使用this指標,若Father類別有get_Name()成員函式 存取同一物件成員時,一般的程式寫法為省略this class Father void get_Name() return name; 省略this指標 ; 經過compiler後,get_Name()函數內容原本應該為

10、Void get_Name() retunr this-name;,使用this指標,若要寫類別的成員函數是要回傳物件本身,則利用回傳this的方式 類別名稱 * 類別的成員函數(傳入參數) /程式內容 return this; /傳回物件本身 ,類別的前置宣告,若類別的宣告發生彼此呼叫的情形,就必須利用類別的前置宣告的方式 在程式開頭加入 class 類別名稱; /類別的前置宣告,ex:若有兩個類別是 husband 與 wife, 且彼此都會呼叫對方類別時。 在程式開頭需加上類別的前置宣告 class wife 前置宣告 class husband wife my_wife; class wife husband my_husband; ,若沒有前置宣告,程式run到這將認不出wife類別,物件的消滅解構子,當程式使用new指令後,程式結束需要把配置給物件的動態記憶體釋放 利用解構子來處理,而解構子不需傳入參數 解構子的執行,發生於 物件離開其有效範圍(scope) 以delete運算子釋放動態配置的物件,解構子的使用方式,類別名稱() /程式片段 ,動態配置物件記憶體,類別名稱 * 指標名稱 = new 類別名稱(建構子輸入變數) 當物件使用new運算子宣告,使用動態記憶體時,之後必須要適放記憶體 delete 指標名稱 會執行物件的 解構子,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1