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

下列C++程式之輸出結果為何?電腦軟體設計(C++) 乙級 C++ 第 79 題 題目 圖片

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

難易度分析

3 / 5

需分析類別繼承結構並追蹤程式執行流程,判定成員函式在不同物件類型下之呼叫行為。

正確答案:②電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ② 圖片

② 電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ② 圖片:正確答案。function(b) 傳入 base 物件,呼叫 base::member() 輸出 "base class";function(d) 傳入 derived 物件,因 member() 為 virtual function,透過 多型 (polymorphism) 機制呼叫 derived::member() 輸出 "derived class"。

錯誤選項解析

  • ① 電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ① 圖片:此輸出表示兩次呼叫皆執行 base class 的 member(),但由於 derived 物件傳入時,虛擬函式 會透過 動態綁定 (dynamic binding) 呼叫 derived class 的覆寫版本,故第二次應輸出 "derived class"。
  • ③ 電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ③ 圖片:此輸出順序顛倒,表示先呼叫 derived 再呼叫 base,但程式中 function(b) 先執行且 b 為 base 型別物件,應先輸出 "base class"。
  • ④ 電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ④ 圖片:此輸出表示兩次皆執行 derived class 的 member(),但 b 是 base 型別物件,並無 derived 的實作,故第一次不可能輸出 "derived class"。
Learning Tip

"本題核心考點為 虛擬函式 (virtual function) 與 多型 (polymorphism) 的 動態綁定 機制。常考陷阱:若 member() 未宣告為 virtual,則會發生 靜態綁定 (static binding),兩次皆輸出 "base class"(因參數型別為 base&)。需區分 virtual 與非 virtual 函式在 基底類別參考/指標 呼叫時的行為差異。"

學員答題分佈

①電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ① 圖片0%
②電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ② 圖片0%
③電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ③ 圖片0%
④電腦軟體設計(C++) 乙級 C++ 第 79 題 選項 ④ 圖片0%

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

相似類型題目