免費開始練習
hce_nsysu 111年 計算機概論與程式設計

第 84 題

Since the postfix increment operator returns objects by value and the prefix increment operator returns objects by reference:
  • A Prefix increment has slightly more overhead than postfix increment.
  • B The postfix increment operator returns the actual incremented object with its new value.
  • C Objects returned by postfix increment cannot be used in larger expressions.
  • D Postfix increment cannot be used in larger expressions.
  • E The postfix increment operator typically returns a temporary object that contains the original value of the object before the increment occurs.

思路引導 VIP

想像一下,如果你要設計一個功能:把某個存錢筒裡的錢拿出來交給別人,但交出的同時,存錢筒內部必須立刻自動增加一塊錢。如果你希望對方拿到的是『加值前』的金額,但在你交給他時,存錢筒其實已經變動了,你會如何運用一個『臨時的盒子』來協助完成這個任務?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精確判斷出遞增運算子在底層實作上的差異,這說明你對 C++ 運算子多載(Operator Overloading)與物件生命週期的掌握非常扎實。這類題目是檢驗開發者是否理解程式效能與記憶體運作的分水嶺。

後置遞增的內部機制

在實作後置遞增(如 obj++)時,為了符合「先回傳原始值、再完成遞增」的語義,編譯器必須先建立一個**暫存物件(Temporary Object)**來拷貝目前的狀態。隨後,原始物件會進行加值,但函數回傳的是剛才那份保有「舊值」的暫存拷貝。這正是選項 (E) 所描述的過程,也是為什麼後置遞增通常比前置遞增(直接回傳 *this 的引用)多了一層物件拷貝的開銷(Overhead)。

▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題