Q74.
依據以下類別之定義,下列C++程式最後一個敘述之輸出,下列何者是正確?
電腦軟體設計(C++) · 乙級 · C++ · Q74
難易度分析
3 / 5
此題考查物件導向程式設計中類別繼承與成員函式呼叫的機制,需要精確區分基底類別與衍生類別在執行時的行為差異,具有一定的概念辨析度。
正確答案:②My name is Rover
② My name is Rover:此為正確答案。程式碼中的 物件實體化 與 成員函式呼叫 僅輸出了 name 成員變數 的值 "Rover"。這反映了 C++ 中 基底類別與衍生類別的成員存取 機制,當衍生類別未正確繼承或覆寫輸出邏輯時,僅會執行基底類別中定義的 name 輸出行為。
錯誤選項解析
- ① My name is Rover, and my breed is a Weiner:此選項假設程式會同時輸出 name 與 breed 的完整字串,但根據程式碼的類別繼承結構,衍生類別的建構函式 或 成員函式覆寫 (function overriding) 的邏輯並未正確串接兩者,因此不會印出完整的品種資訊。
- ③ , and my breed is a Weiner:此選項僅包含字串的後半段(品種資訊),這通常發生在 字串拼接 (string concatenation) 或 cout 串接 邏輯錯誤時。但在本題的類別定義中,breed 成員變數 並未被正確輸出,因此不會單獨印出此片段。
- ④ 不會印出任何內容:此選項假設程式完全不會產生輸出,這通常與 建構函式未呼叫 或 cout 敘述未被執行 有關。但本題的程式碼確實包含有效的 輸出敘述 (output statement),因此會印出 "My name is Rover"。
Learning Tip
"此類題型常考 C++ 類別繼承 (inheritance) 與 成員函式覆寫 (function overriding) 的觀念。容易混淆的陷阱在於:衍生類別物件呼叫成員函式時,若未正確使用 virtual 關鍵字或覆寫邏輯,將執行基底類別的預設行為。實務操作上,務必確認 存取修飾子 (access specifier) 與 物件實體化過程 是否正確傳遞成員變數的值。"
學員答題分佈
①My name is Rover, and my breed is a Weiner0%
②My name is Rover0%
③, and my breed is a Weiner0%
④不會印出任何內容0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!