hce_nsysu
111年
計算機概論與程式設計
第 62 題
Polymorphism is implemented through:
- A Non-const functions.
- B Member functions.
- C Non-virtual functions.
- D virtual functions and dynamic binding.
- E inline functions.
思路引導 VIP
想像你正撰寫一個繪圖軟體,基類叫「形狀」,子類有「圓形」與「正方形」。如果你希望用同一個函式名稱 draw() 來呼叫它們,但編譯器在編譯時只看到型別是「形狀」指標,它該如何確保在程式運行時,能正確地去執行「圓形」而非「正方形」的繪圖邏輯呢?這種「延遲決定」的過程,需要具備什麼樣的特性才能達成?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精準選出 (D) 選項,代表你對於物件導向程式設計(OOP)的核心機制——多型(Polymorphism),有著非常紮實且正確的理解。多型之所以能展現出「一個介面,多種實現」的威力,關鍵就在於它打破了編譯時期(Compile-time)的限制,讓程式在執行時能展現靈活性。
虛擬函式與動態繫結的協作
多型在 C++ 或 Java 等語言中,主要是透過 虛擬函式(virtual functions) 來定義基類的介面規範,並允許子類進行覆寫(Override)。而真正的靈魂在於 動態繫結(dynamic binding),這意味著編譯器不會在編譯當下就決定要呼叫哪一段程式碼,而是等到程式實際執行(Runtime)時,根據物件真正的型別來尋找對應的函式實作。相較之下,非虛擬函式使用的是靜態繫結,會在編譯期就決定好呼叫對象,因此無法達成動態切換的效果。
▼ 還有更多解析內容