C 拾遺 多型性

2021-06-22 12:27:12 字數 1130 閱讀 3783

參考資料:

大部分轉的,作了少量編輯,補充點內容。

在物件導向的概念中,多型性是指不同物件接收到相同訊息時,根據物件類的不同產生不同的動作。多型性提供了同乙個介面可以用多種方法進行呼叫的機制,從而可以通過相同的介面訪問不同的函式。具體地說,就是同乙個函式名稱,作用在不同的物件上將產生不同的操作。

多型性提供了把介面與實現分開的另一種方法,提高了**的組織性和可讀性,更重要的是提高了軟體的可擴充性。

多型的三大特徵: 要有重寫,要有繼承,父類指向子類。

重寫與父類指向子類通過虛函式實現,是為了實現介面的重用。

繼承是為了實現**的重用。

2、編譯時的多型性和執行時的多型性

首先,一般提到多型,我們說的是執行時多型,而不是指編譯時多型。嚴格來說,只有執行時多型才叫多型,函式過載與運算子過載不是物件導向的,所以不能稱為多型,模版屬於范型,也不包含於物件導向。

由靜態聯編支援的多型性稱為編譯時的多型性或靜態多型性,也就是說,確定同名操作的具體操作物件的過程是在編譯過程中完成的。

▲c++用函式過載和運算子過載來實現編譯時的多型性。模版也屬於編譯時多型。

由動態聯編支援的多型性稱為執行時的多型性

或動態多型性,也就是說,確定同名操作的具體操作物件的過程是在執行過程中完成的。

▲c++用繼承和虛函式來實現執行時的多型性。

過載:同名函式不同引數。不屬於物件導向,在編譯期實現,通過編譯器將同名函式名變換而實現出多個不同名的函式。

重寫:也稱覆蓋,子類中對於父類同名同引數函式的完全重新編寫。屬於物件導向,在執行期實現,通過虛函式實現,主要是為了實現介面的重用,將相同介面對應於不同的型別實現不同的方法。重寫要求函式名與引數全部一樣,否則就不是重寫,而是過載。

聯編也稱繫結,是指源程式在編譯後生成的可執行**經過連線裝配在一起的過程。聯編分為兩種:靜態聯編和動態聯編。

① 靜態聯編

在執行前就完成的聯編,又稱前期聯編。這種聯編在編譯時就決定如何實現某一動作,因此要求在程式編譯時就知道呼叫函式的全部資訊。這種聯編型別的函式呼叫速度很快,效率也很高。

② 動態聯編

在執行時動態地決定實現某一動作,又成後期聯編。這種聯編要到程式執行時才能確定呼叫哪個函式,提供了更好的靈活性和程式的易維護性。

C語言拾遺

main函式引數 c語言規定main函式引數只能有兩個,習慣上這兩個引數寫成argc和argv。c語言還規定argc必須是整形變數,argv必須是指向字串的指標陣列。因此,main函式的函式頭應該寫為 main argc,argv int argc char argv 或者 main int arg...

C 點滴拾遺

1.成員變數的初始化順序,與建構函式中初始化列表的順序無關,與成員變數申明的順序一致 多繼承中,基類的構造順序,與派生類的建構函式初始化列表中基類的構造順序無關,與定義派生類時基類的申明順序有關 2.友元關係不能繼承。3.指標和typedef typedef int pint int i 1 con...

C 拾遺 目錄

c 語言標準更新很慢,截止到本文為止,最新的是c 11和c 14標準。c 是一門很有魅力,但也的確很難的程式語言,能夠稱得上精通它的人的確不多。本序列不致力於寫成c 的百科全書,而是基於最新標準對一些語言上的難點和易於被大多數人忽略的語言點,進行 故名拾遺。基礎 name cast 顯式型別轉換 引...