LONGEPASS
電腦軟體設計(C++)/C++/Q109
中等
正確率 -
Q109.

有關C++語言的敘述,下列那些為正確?

電腦軟體設計(C++) · 乙級 · C++ · Q109

難易度分析

3 / 5

本題採複選形式,要求全面分析多個技術敘述的正確性。題目設計了易混淆的概念陷阱,需精準區分物件導向特性的核心目的與其實際影響,增加了判別難度。

正確答案 (複選):①, ③

  • ① 封裝(Encapsulation)使物件內的資料易於保護:封裝(Encapsulation) 透過將資料成員與成員函式綁定並設定存取權限(如 `private`、`protected`),有效隱藏內部實作細節,防止外部程式直接存取或修改敏感資料,達成資料保護之目的。
  • ③ 多重繼承(Multiple Inheritance)是一較具爭議性的功能:多重繼承(Multiple Inheritance) 允許一個類別同時繼承多個父類別,但會引發鑽石問題(Diamond Problem),即當多個父類別有同名成員時產生命名衝突與二義性(Ambiguity),因此在物件導向設計中較具爭議性。

錯誤選項解析

  • ② 繼承(Inheritance)使程式易於修改:繼承(Inheritance) 的主要目的是達成程式碼重用(Code Reusability) 與建立類別階層關係,而非使程式易於修改;過度使用繼承反而可能導致類別耦合度過高,增加維護難度。
  • ④ 動態連結(Dynamic Binding)增加程式的執行效率:動態連結(Dynamic Binding)(或稱晚期綁定)是在執行時期才決定呼叫哪個函式(如 C++ 的 `virtual` 函式),其主要目的是提供程式彈性與多型(Polymorphism) 能力,但會因額外的虛擬函式表(vtable)查詢而略微降低執行效率,而非增加效率。
Learning Tip

"本題核心考點為 C++ 物件導向四大特性(封裝、繼承、多型、抽象) 的技術本質與應用情境。常考陷阱在於混淆各特性的「主要目的」與「副作用」:例如 繼承 強調的是程式碼重用而非修改便利性;動態連結/多型 犧牲部分執行效能換取設計彈性。實務上應優先使用組合(Composition) 而非繼承來降低耦合度,並注意多重繼承可能引發的 Diamond Problem,可透過 虛擬繼承(virtual inheritance) 解決。"

學員答題分佈

①封裝(Encapsulation)使物件內的資料易於保護0%
②繼承(Inheritance)使程式易於修改0%
③多重繼承(Multiple Inheritance)是一較具爭議性的功能0%
④動態連結(Dynamic Binding)增加程式的執行效率0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目