Q91.
下列有關建構子(Constructor)與解構子(Destructor)的描述何者是正確?
電腦軟體設計(C++) · 乙級 · C++ · Q91
難易度分析
2 / 5
本題考查物件導向程式設計中特殊成員函式的基本定義與性質,選項設計涵蓋了傳回值、繼承與多載等基礎概念,屬於對核心定義的直接記憶與辨析。
正確答案:②物件建立時會自動呼叫類別的建構子,物件毀去時會自動呼叫類別的解構子
② 物件建立時會自動呼叫類別的建構子,物件毀去時會自動呼叫類別的解構子:物件建立時編譯器會自動呼叫對應的建構子進行初始化,而物件銷毀時則自動呼叫解構子清理資源,此為 C++ RAII 慣用法的核心機制。
錯誤選項解析
- ① 建構子與解構子可以宣告傳回值:建構子與解構子不允許宣告任何傳回值型別(包含 `void` 亦不可),其設計目的僅在於物件生命週期的初始化與資源釋放。
- ③ 建構子與解構子可以被繼承:建構子與解構子均不可被繼承,衍生類別必須自行定義;若未明確撰寫,編譯器僅會自動產生預設版本,而非從基底類別繼承。
- ④ 一個類別僅能定義一個建構子與解構子:一個類別可透過多載機制定義多個建構子(參數列不同即可),但解構子因不接受參數,故每個類別僅能定義一個。
Learning Tip
"本題核心考點為 C++ 物件生命週期管理與特殊成員函式的性質。常考陷阱包括:混淆「建構子多載」與「解構子唯一性」、誤認建構子/解構子可被繼承或可有回傳值。實務上應熟記 RAII(Resource Acquisition Is Initialization) 原則,理解建構子負責資源取得、解構子負責資源釋放的配對關係,並注意衍生類別物件銷毀時會先呼叫自身解構子再呼叫基底類別解構子的順序。"
學員答題分佈
①建構子與解構子可以宣告傳回值0%
②物件建立時會自動呼叫類別的建構子,物件毀去時會自動呼叫類別的解構子0%
③建構子與解構子可以被繼承0%
④一個類別僅能定義一個建構子與解構子0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!