地特四等申論題
113年
[資訊處理] 程式設計概要
第 一 題
📖 題組:
三、(一)下列 C++程式,當程式執行後輸入二個正整數,「7 10」,其輸出為何?(5 分) [程式碼包含 getNumbers, function1 (傳址呼叫), showResult] (二)若 C++程式包含下列宣告: class Automobile { public: void setPrice(double newPrice); void setProfit(double newProfit); double getPrice(); private: double price; double profit; double getProfit(); } 且主程式(main function)包含下列宣告,並設定完成其 member 變數中的值。 Automobile Toyota, Nissan; 下列那些指令敘述(statements)在主程式中是合法的(legal),那些是不合法的(illegal)?(10 分) Toyota.price = 5233.99; Nissan.setPrice(4000.24); double aPrice, aProfit; aPrice = Nissan.getPrice(); aProfit= Nissan.getProfit(); aProfit= Toyota.getProfit(); Toyota = Nissan; (三)請說明物件導向程式中多型(Polymorphism)的概念。多型通常可以透過多載(Overloading)和覆寫(Overriding)來實現。請說明多載與覆寫的定義與特性。(15 分)
三、(一)下列 C++程式,當程式執行後輸入二個正整數,「7 10」,其輸出為何?(5 分) [程式碼包含 getNumbers, function1 (傳址呼叫), showResult] (二)若 C++程式包含下列宣告: class Automobile { public: void setPrice(double newPrice); void setProfit(double newProfit); double getPrice(); private: double price; double profit; double getProfit(); } 且主程式(main function)包含下列宣告,並設定完成其 member 變數中的值。 Automobile Toyota, Nissan; 下列那些指令敘述(statements)在主程式中是合法的(legal),那些是不合法的(illegal)?(10 分) Toyota.price = 5233.99; Nissan.setPrice(4000.24); double aPrice, aProfit; aPrice = Nissan.getPrice(); aProfit= Nissan.getProfit(); aProfit= Toyota.getProfit(); Toyota = Nissan; (三)請說明物件導向程式中多型(Polymorphism)的概念。多型通常可以透過多載(Overloading)和覆寫(Overriding)來實現。請說明多載與覆寫的定義與特性。(15 分)
📝 此題為申論題,共 3 小題
小題 (一)
下列 C++程式,當程式執行後輸入二個正整數,「7 10」,其輸出為何?(5 分)
思路引導 VIP
本題重點在於辨別 C++ 函式參數傳遞機制的差異。解題時需先尋找參數宣告中是否有 & (傳址呼叫) 或沒有 & (傳值呼叫),手動追蹤變數狀態,以此判斷函式內的數值異動是否會覆寫主程式的變數值。
小題 (二)
若 C++程式包含下列宣告...下列那些指令敘述(statements)在主程式中是合法的(legal),那些是不合法的(illegal)?(10 分)
思路引導 VIP
本題重點在於「存取修飾子(Access Specifiers)」的判斷。看到此類題目,先檢視類別中 public 與 private 區塊涵蓋了哪些成員變數與函式,主程式僅能呼叫 public 成員,若嘗試存取 private 成員即屬不合法(Illegal);另外需記得 C++ 預設允許同型別物件之間的直接賦值(=)。
小題 (三)
請說明物件導向程式中多型(Polymorphism)的概念。多型通常可以透過多載(Overloading)和覆寫(Overriding)來實現。請說明多載與覆寫的定義與特性。(15 分)
思路引導 VIP
看到「多型」,應先點出「同一介面,多種實作」的核心精神。接著運用對比法來論述多載與覆寫:多載(Overloading)強調「同名不同參數」的編譯期靜態綁定;覆寫(Overriding)則強調「繼承架構下同名同參數」的執行期動態綁定。