Examly題庫立即開始練習
國家安全情報人員考試五等考試-資訊組資料處理大意104 年第 7 題單選題考點:誤判多型考點:靜態繫結

根據下列的 C++語言程式碼,請問輸出結果為何? #include <iostream> using namespace std; class CPet { public: void Show() { cout << "Pet"; } }; class CDog : public CPet { public: virtual void Show() { cout << "Dog"; } }; class CSmallDog : public CDog { public: void Show() { cout << "SmallDog"; } }; int main() { CPet aPet; CDog aDog; CSmallDog aSmallDog; CPet* pPet[3] = { &aPet, &aDog, &aSmallDog}; for (int i=0; i<3; i++) pPet[i]->Show(); return 0; }

APet Dog SmallDog
BPet Pet Pet正確答案
CPet Dog Dog
DPet SmallDog SmallDog
答案與詳解
B
正確答案
基底類別 CPet 的 Show() 非 virtual,透過 CPet* 指標呼叫時採靜態繫結,三次都輸出 Pet。

逐選項解析

APet Dog SmallDog誤判多型✕ 易錯陷阱
這是「若 CPet::Show() 有 virtual」才會出現的多型結果。但題目中 CPet::Show() 沒宣告 virtual,所以不會動態分派。最常見陷阱。
BPet Pet Pet靜態繫結✓ 正確
CPet::Show() 非 virtual,透過 CPet* 指標呼叫時採靜態繫結,直接呼叫 CPet::Show(),三個元素皆輸出 Pet。CDog 後來加 virtual 對基底無效。
CPet Dog Dog✕ 錯誤
DPet SmallDog SmallDog✕ 錯誤

立即註冊,看完整詳解

這題的完整詳解,註冊就能看 · 每天 2 題免費

精選詳解
  • 完整逐選項解析
  • 秒殺解題技巧與破題關鍵
  • 關鍵知識表整理
  • 陷阱與易錯提醒
  • 同考點歷屆題庫連續刷題與錯題本

資料處理大意 相關題目

想練更多資料處理大意考古題?

Examly 收錄 50 萬+ 道歷屆題目,每題都有像這樣的精選詳解。免費下載,立即開練。

Examly