答:多型是物件導向的重要特性之一,它是一種行為的封裝,是同一種事物所表現出的多種形態,簡單地說是」乙個介面多種實現「
答:有兩種型別的多型性:
答:多型有動態多型,靜態多型,函式多型和巨集多型等。
動態多型基於繼承機制和虛函式來實現的。
靜態多型引入了泛型的概念。
函式多型基於函式過載。
巨集多型基於巨集替換。
答: - 為了方便使用多型特性
- 在很多情況下,基類本身生成物件是不合理的。
補充:純虛函式在基類中是沒有定義的,必須在子類中加以實現。
如果基類含有乙個或多個純虛函式,那麼它就屬於抽象基類,不能被例項化。
答: - 虛函式:如果乙個類中宣告了虛函式,這個函式是實現的,他的作用是為了能讓這個函式在他的子類裡面能被覆蓋,這樣就可以實現動態多型。
- 純虛函式只是乙個介面,是個函式的宣告而已,他留在子類中實現。
- 虛函式在子類中可以不過載
- 純虛函式必須在子類中實現
- 虛函式的類用作」實現繼承「,即繼承介面的同時也繼承了父類的實現。
- 純虛函式用於」介面繼承「,即純虛函式關注的是介面的統一性,實現由子類完成
- 帶純虛函式的類叫做虛基類,這種類不能直接生成物件。
答:虛析構函式保證了在析構時,避免只呼叫基類析構函式而不呼叫派生類析構函式的情況,保證資源正常釋放,避免了記憶體釋放。只有當乙個類被用來作為基類的時候,才會把析構函式寫成虛函式
答:分別簡單講述一下函式過載,函式覆蓋,函式隱藏的概念與特徵:
函式過載:過載函式通常用來命名一組功能相似的函式
1.函式要在相同的類域函式覆蓋:覆蓋是指派生類函式覆蓋基類函式2.函式的名字要相同
3.函式的引數列表或返回值不同
1.函式是要在不同的類域函式隱藏:指派生類的函式遮蔽了與其同名的基類函式2.兩個函式的名稱相同
3.基類函式必須是虛函式
3.兩個函式的引數相同
1.兩個函式在不同的類域參考資料:請看我以前的博文2.函式名稱相同
3.函式引數不同
4.如果派生類函式與基類函式引數相同,但是在基類函式中沒有virtual關鍵字,發生函式隱藏
c++多型篇2——虛函式表詳解之從記憶體布局看函式過載,函式覆蓋,函式隱藏
答: 多型:即乙個介面多種實現
理解的多型:多型是物件導向的三大特性之一。多型分為靜態多型及動態多型。
靜態多型包含函式過載與泛型程式設計,靜態多型是程式呼叫函式,編譯器決定使用哪個可執行**塊。
動態多型是由繼承機制及虛函式實現的。通過指向派生類的基類指標或引用,訪問派生類中同名覆蓋成員函式。
多型的作用:把不同的子類物件都當作父類來看,可以遮蔽不同子類物件之間的差異,寫出通用的**,做出通用的程式設計,以適應需求的不斷變化。
參考資料:我以前的博文
c++多型篇1一靜態聯編,動態聯編、虛函式與虛函式表vtable
hadoop hdfs 問題集錦 面試問題集錦
hadoop hdfs問題集錦 一 hadoop為什麼不適合處理大量的小檔案,怎麼解決?原因 1 檔案的元資料 包括檔案被分成了哪些blocks,每個block儲存在哪些伺服器的哪個block塊上 都是儲存在namenode上的記憶體,會對namenode的記憶體造成壓力 2 檔案過多會造成檔案的定...
面試小問題集錦
關於makefile 如何生成動態鏈結庫和靜態鏈結庫,生成這些庫的作用是什麼?無論靜態庫,還是動態庫,都是由 o檔案建立的。靜態庫檔名的命名規範是以lib為字首,緊接著跟靜態庫名,擴充套件名為.a。例如 我們將建立的靜態庫名為myhello,則靜態庫檔名就是libmyhello.a。在建立和使用靜態...
面試問題集錦
jdbc運算元據庫過程 可重入鎖和synchronized鎖區別 synchronized的上鎖機制。redis實現分布式鎖 jvm優化 classloader 事務的傳播級別 mysql的鎖機 制除了用過redis 還有沒有用過其他的快取技術?jvm原理?class載入順序 aop怎麼實現啊?分布...