LONGEPASS
電腦軟體設計(C++)/C++/Q137
困難
正確率 -
Q137.

下列C++程式碼中,那些為正確的指令?電腦軟體設計(C++) 乙級 C++ 第 137 題 題目 第一張圖片 電腦軟體設計(C++) 乙級 C++ 第 137 題 題目 第二張圖片電腦軟體設計(C++) 乙級 C++ 第 137 題 題目 第三張圖片

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

難易度分析

4 / 5

本題要求精確區分 C++ 繼承體系中基底類別與衍生類別之間的型別轉換方向。由於採複選形式,必須對每一項指派指令的合法性進行完整判別,且涉及隱式轉型的限制,具有較高的判別難度。

正確答案 (複選):①, ②, ④

  • ① 甲:甲(c1=*p1)正確:`p1` 為 `C1*` 型別指標,解參考後得到 `C1` 型別物件,可直接以物件拷貝(Object Copy)方式賦值給同型別的 `C1` 物件 `c1`,型別完全匹配。
  • ② 乙:乙(c1=*p2)正確:`p2` 為 `C2*` 型別指標,`C2` 公有繼承(public inheritance)自 `C1`,解參考後可透過向上轉型(Upcasting)隱式轉換為基底類別 `C1` 型別,因此可賦值給 `c1`。
  • ④ 丁:丁(c2=*p2)正確:`p2` 為 `C2*` 型別指標,解參考後得到 `C2` 型別物件,可直接賦值給同型別的 `C2` 物件 `c2`,型別完全匹配。

錯誤選項解析

  • ③ 丙:丙(c2=*p1)錯誤:`p1` 為基底類別 `C1*` 指標,無法隱式轉換為衍生類別 `C2` 型別,此為向下轉型(Downcasting),C++ 不允許隱式向下轉型,會產生型別不相容(Type Incompatibility)編譯錯誤。
Learning Tip

"本題核心考點為 C++ 繼承體系中的型別轉換規則。向上轉型(Derived→Base)可隱式進行,但向下轉型(Base→Derived)必須使用 `dynamic_cast` 或 `static_cast` 明確轉型,否則會編譯失敗。常考陷阱是混淆指標型別與物件型別的指派方向,切記「子類別物件可視為父類別,但父類別物件不可視為子類別」。"

學員答題分佈

①甲0%
②乙0%
③丙0%
④丁0%

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

相似類型題目