- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
§9.2靜態聯編和動態聯編動態聯編是指在程式運行時進行的聯編工作,又稱為晚期聯編。二、動態聯編編程實現求圖形面積例對於同一個對象的引用,不同的聯編可以選擇不同的實現,這便是多態性。§9.3虛函數虛函數是動態聯編的基礎,是一種非靜態的成員函數。定義格式如下:一、虛函數的定義virtual類型說明符函數名(參數表){函數體}注:如果某類中的一個成員函數被說明為虛函數,則意味著該成員函數在派生類中可能存在著不同的實現。編程實現求圖形面積例§9.3虛函數二、虛函數的特性1.要求派生類中的虛函數與基類中的虛函數具有相同的參數個數,對應的參數類型相同和返回值類型相同。§9.3虛函數二、虛函數的特性2.基類中說明的虛函數具有自動向下傳給它的派生類的性質。因此對派生類的虛函數中的virtual說明可以省略。§9.3虛函數二、虛函數的特性3.只有非靜態的成員函數才可以說明為虛函數。§9.3虛函數二、虛函數的特性4.構造函數不能說明為虛函數,但是析構函數可以說明為虛函數。分析下列程式,並回答問題例11.該程式的執行結果是什麼?為什麼?B::f1()called.分析下列程式,並回答問題例1如果將A::f2()的實現改為:voidA::f2(){this-f1();}該程式的執行結果是什麼?B::f1()called.分析下列程式,並回答問題例13.如果將A::f2()的實現改為:voidA::f2(){A::f1();}該程式的執行結果是什麼?A::f1()called.分析下列程式是否實現了動態聯編例2該程式的執行結果是什麼?為什麼?Callingtext(b).B.i=22Callingtext(d).B.i=22分析下列程式的輸出結果例3InB.InD.分析下列程式的輸出結果例4InA::fun().InC::fun().§9.3虛函數總結動態聯編實現的三個條件要有說明的虛函數;調用虛函數操作的是指向對象的指針或者對象引用;由成員函數調用虛函數。多態性和虛函數面向對象程式設計語言的三大特性:封裝性繼承性多態性指同一個介面名稱有多種功能用戶單一介面名稱功能1功能n…§9.1運算符重載1.運算符的重載實際上是函數的重載。重載的形式是:類型operator運算符號(參數說明);一、運算符重載中的幾點說明ClassA(){//…intoperator+(A,A);//兩個A類對象的加法}例§9.1運算符重載2.只有以下幾種運算符不能重載:·::·*?:例如:intoperator::(int,int);一、運算符重載中的幾點說明intoperator@(int,int);§9.1運算符重載3.運算符重載遵循著“四個不變”的原則:①優先順序不變②結合性不變③運算元個數不變④語法結構不變一、運算符重載中的幾點說明重載為類的成員函數注:單目運算符採用成員函數形式重載時,該參數表無參數;雙目運算符採用成員函數形式重載時,該參數表中有一個參數。二、運算符重載的兩種形式類名operator運算符(參數表){…}§9.1運算符重載#includeiostream.hclassPoint{intx,y;public:Point(){}Point(inti,intj){x=i;y=j;}voiddisp(){cout“(”x“,”couty“)”endl;}Pointoperate+(Pointp)
文档评论(0)