c 學習彙總 多型

2022-03-11 16:43:47 字數 793 閱讀 2701

剛開通了的部落格,原因是我的師兄和前輩們在這裡寫的一些學習筆記讓我受益匪淺,所以決定從今天起用這個平台來記錄我的點滴學習心得。我喜歡gis二次開發,以後應該也不會脫離於此,對於程式設計我積累的知識太零散了,通過記錄些筆記,來把所學的知識串起來。

最近在看一本書《你必須知道的.net》,書涵蓋的內容比較多,對於c#,.net平台以往所學的零散東西有了慢慢的總結和新的認識。把一些基礎的東西記錄於此。

先說說多型吧:

1.基類繼承式多型

如書中所說,基類繼承式多型的關鍵是繼承體系的設計與實現。書中舉了個簡單的列子

files myfile=new wordfile();

myfile.open();

myfile是乙個父類files變數,保持了指向子類wordfile例項的引用,然後呼叫乙個虛方法open,具體的呼叫則決定於執行時而非編譯時。從設計模式的角度看,基類繼承式多型體現了一種is-a方式,例如wordfile is-a files就體現在這種繼承關係中。

2.介面實現式多型

區別於基類的繼承方式,這種多型通過實現介面的方法約定形成繼承體系,具有更高的靈活性。從設計模式的角度來看,介面實現多型體現了一種can-do關係。上述的檔案載入器也可以這樣實現

ifileopen myfile=new wordfile();

myfile.open();

多型的執行機制:

從技術實現角度看,是.net的動態繫結機制成就了物件導向的多型特性。靜態繫結在編譯期就可以確定關聯,一般是以方法過載來實現的;動態繫結則在執行期通過檢查虛擬方法表來確定動態關聯覆寫的方法,一般以繼承和虛方法實現。

C 多型面試題彙總

總結了一些常見的面試題,通過查閱資料給出了一些淺薄的解析,歡迎各位批評指教。inliine函式可以實虛函式碼?不可以,因為inline函式沒有位址,無法將他存放到虛函式表中。靜態成員可以是虛函式嗎?不能,因為靜態成員函式中沒有this指標,使用 成員函式的嗲用用方式無法訪問虛函式表,所以靜態成員函式...

C 學習筆記之多型 多型的學習 多型學習

c 學習筆記之多型 多型的學習 多型學習 多型分為兩類 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 動態多型...

C 多型學習

純虛函式,0是告訴編譯器函式沒有主體 virtual int area 0 這個學習中有個點不懂,是關於指標的,先看 class shape virtual int area 純虛函式 virtual int area 0 class rectangle public shape int area ...