多態性:
多態性是指發出的同一條消息,被不同類型的對象接收時可能產生完全不同的行為。
消息主要是指對類的成員函數的調用,行為主要是指成員函數的不同實現。
多態性是實現“一種接口,多種方法”的技術。
這裡“一種接口”指的是相同的函數名,“多種方法”指多種函數實現。
多態的類型:
主要兩種:編譯時的多態和運行的多態
編譯時的多態是指通過函數的重載或運算符的重載來實現;運行時的多肽是通過虛函數來實現。
運行時的多態性是指在程序執行之前,還無法根據函數名和參數確定應該調用哪一個具體的實現函數,而必須在執行過程中,根據具體的情況動態確定應該調用哪一個函數。
多態的實現:運算符重載/函數重載/虛函數。
連編:
多態性的實現過程中,確定調用哪個同名函數的過程就是連編(binding)。
連編是指計算機程序彼此關聯的過程,就是把一個標識符名和一個存儲地址聯繫在一起的過程。
按照連編進行階段的不同,可以將連編分為靜態連編和動態連編多種,分別對應多肽實現的兩種方式。
靜態連編
在編譯階段實現的連編
在編譯過程中,編譯系統可以根據類型匹配特徵來確定程序中的調用操作和某個同名函數的實現之間的關係,也就是說確定某個同名方式到底調用哪一段函數代碼實現。
函數重載和運算符重載是通過靜態連編實現在編譯時的多肽體現。
靜態連編的優點是調用速度快,效率高,缺點是不夠靈活。
動態連編
是函數運行過程中才確定調用的函數,這種在運行階段進行的連編就是動態連編。
虛函數是通過動態連編實現運行過程中的多態。
動態連編的優點是提供了更好的編程靈活性、問題抽象性和程序易維護性。缺點是調用速度慢。