免費開始練習
地特三等申論題 108年 [資訊處理] 程式語言

第 三 題

三、試問下列程式碼的輸出為何?(25 分) #include using namespace std; class A { public: int testa; A() :testa(100) { } virtual void f() { cout << "apple" << endl; } void g() { cout << "banana" << endl; } }; class B : public A { public: B() :testb(300) {} void f() { cout << "cat" << endl; } void g() { cout << "dog" << endl; } int testb; }; int main() { B b; A *a = &b; a->g(); a->f(); cout << a->testa << endl; cout << b.testb << endl; system("pause"); return 0; }
📝 此題為申論題

思路引導 VIP

本題測試 C++ 的物件導向核心概念,特別是「靜態綁定(Static Binding)」與「動態綁定(Dynamic Binding)」的差異。解題時需先確認指標型別與實體物件型別,並觀察函式是否帶有 virtual 關鍵字,以判斷方法呼叫是根據指標型別還是物件型別。

🤖
AI 詳解 AI 專屬家教

【解題思路】運用 C++ 的多型機制與建構子初始化順序,區分靜態綁定(非虛擬函式)與動態綁定(虛擬函式)。 【詳解】 已知:

▼ 還有更多解析內容

📝 同份考卷的其他題目

查看 108年[資訊處理] 程式語言 全題

升級 VIP 解鎖