第12章 类别继承(class inheritance).ppt

第12章 类别继承(class inheritance).ppt

ID:61960466

大小:122.00 KB

页数:22页

时间:2020-02-25

第12章 类别继承(class inheritance).ppt_第1页
第12章 类别继承(class inheritance).ppt_第2页
第12章 类别继承(class inheritance).ppt_第3页
第12章 类别继承(class inheritance).ppt_第4页
第12章 类别继承(class inheritance).ppt_第5页
资源描述:

《第12章 类别继承(class inheritance).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第12章類別繼承(classinheritance)程式碼再利用(Reuse)、C++類別繼承陣列基底類別(baseclass)、列表12-1arraydb.h:ArrayofDouble公有繼承––is-a關係宣告衍生類別朝上(upcast)與朝下轉換(downcast)虛擬成員函數虛擬函數運作方式單純虛擬函數(purevirtualfunction)三種類別繼承方式問題回顧程式設計練習(一)、(二)1程式碼再利用(Reuse)動機:開發新專案時,最好能使用一些經過測試的程式碼,而不需重新設計。節省研發時間。降低程式中的錯誤。讓程式設計師專注於程式架構。傳統程式碼再利用方法:函數庫

2、(functionlibrary)傳統C程式庫提供函數,如strlen()。針對特殊用途開發的程式庫,如資料庫管理函數、螢幕控制函數。缺點:未提供原始碼,無法擴充或修改功能。即使有原始碼,修改的同時,也可能更動了其他函數。2C++類別繼承C++的程式碼再利用方法之一:類別繼承類別由資料和運作方式(成員函數)所組成,整合性高於函數庫。類別通常包含原始碼。從一個基底類別(baseclass),繼承它的全部特性,包含資料和運作方式,改變成一個新的類別。從一個繼承來的類別開始設計,遠比重新設計來得簡單。對繼承來的類別可做以下更動:加入新的資料。加入新的函數。修改原有函數之運作方式。類別繼承v

3、s.修改類別原始碼類別繼承為程式語言中提供之系統化機制,從原有類別調整設計新的類別。直接修改類別原始碼,程式語言及編譯器均無法提供任何協助。3陣列基底類別(baseclass)C++語言已提供陣列型態,為何還需要陣列類別?C++語言陣列型態的缺點:未提供陣列範圍檢查。doublea[4]={1.27,1.98,3.0,2.1};a[129301]=1.0;//accessviolation存取違反a[-3]=1.5;某些程式片斷,使用者很難分辨使用陣列或指標。voidup(double*x,intn);//x是指標或陣列?n為陣列大小?如果將陣列名稱傳入函數引數中,函數無從得知陣列的

4、大小。通常陣列不被視為一個實體,例如,不能以陣列為另一陣列設定初值;也不能將陣列設定給另一陣列。未提供陣列之數學運算。4列表12-1arraydb.h:ArrayofDoubleclassArrayDb{private:unsignedintsize;//numberofarrayelementsprotected:double*arr;//addressoffirstelementpublic:ArrayDb();//defaultconstructorArrayDb(unsignedintn,doubleval=0.0);//settovalArrayDb(constdouble

5、*pn,unsignedintn);//settopnArrayDb(constArrayDb&a);//copyconstructor~ArrayDb();//destructorunsignedintarsize()const{returnsize;}//overloadedoperatorsdouble&operator[](inti);//arrayindexingconstdouble&operator[](inti)const;//indexing(no=)ArrayDb&operator=(constArrayDb&a);friendostream&operator<<

6、(ostream&os,constArrayDb&a);};5列表12-3:使用ArrayDb#include#include"arraydb.h"intmain(void){unsignedintregions;//readnumberofregionscin>>regions;ArrayDbtons(regions);//createan"array"ofthatsizecout<<"Entertheregionaltinselsalesintons:";for(inti=0;i

7、":";cin>>tons[i];//usearraynotation}ArrayDbdup;//defaultobjectdup=tons;//arrayassignmentdoublewts[5]={155.2,189.6,174.3,256.9,203.5};ArrayDbbod(wts,5);//initializeanArrayDbtoanarrayreturn0;}6公有繼承––is-a關係C++擁有三種繼承模式:公有(public)、保護(p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。