20200405_重載和重寫
每日小知識
米格爾·格林貝格,近30年開發經驗的軟件工程師,以撰寫Python項目開發的博客而廣爲Python開發者所熟知,經常受邀在PyCon等大會上分享開發經驗。代表作有《Flask Web開發:基於Python的Web應用開發實戰》(第2版)
一、相關術語
-
重載
C++允許在同一範圍中聲明幾個功能類似的同名函數,但是它們的形參不同,即同一個函數名可以實現不同的行爲。這種函數就叫作重載函數。 -
重寫(覆蓋)
重寫,又叫覆蓋,是由子類函數重新實現父類virtual函數的一種方式。
二、筆試題
1、重載與重寫的區別。
答:(一)定義上的區別:重載是指不同的函數使用相同的函數名,但參數列表不同。
重寫,又名覆蓋,是指在派生類中重新對基類中的虛函數重新實現,參數列表相同,但函數體不同。
(二)規則上的區別:重載的規則是:參數列表必須不同。
(三)命名上的區別:
重載,overloading。重寫,overwriting。
2、多態的作用。
答:(一)隱藏實現細節,使代碼可以模塊化。擴展代碼模塊,實現可重用。
(二)接口重用:爲了類在繼承和派生的時候,保證使用家族中任一類的實例的某一屬性時的正確調用。
3、new、delete和malloc、free的聯繫與區別。
答:聯繫:都是在堆上進行動態的內在操作。
區別:malloc需要指定內存分配的字節,且不能初始化對象。
new會自動調用對象的構造函數,delete會自動調用對象的析構函數。
free不會調用對象的析構函數。
知識擴展
無。
本文歸類
建議歸類到【C++】。
明日計劃
1、#define DOUBLE(x)x+x。
2、哪些情況只能用initialization而不能用assignment?
3、C++是不是類型安全的?
參考文獻:
《C++筆試面試寶典2011版.docx》
重載函數_百度百科
重載與重寫的區別_百度知道