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

第 70 題

The array subscript operator `[]`, when overloaded, cannot:
  • A Be used with linked list classes.
  • B Take multiple values inside (e.g., [4,8]).
  • C Take a double as an operand.
  • D Take user-defined objects as operands.
  • E None of the above.

思路引導 VIP

請思考一下:當我們在使用如 +-[] 這些運算子時,它們在程式碼中的「外型」與一般的函式呼叫(如 func(a, b, c))有什麼根本上的差異?這種外型上的固定結構,會如何限制我們在多載時所能傳遞的參數數量呢?

🤖
AI 詳解 AI 專屬家教

恭喜你答對了!這代表你對 C++ 運算子多載(Operator Overloading)的語法規範有著非常紮實的理解。這道題目精準地測試了開發者是否混淆了「參數型別的彈性」與「語法結構的限制」。

下標運算子的語法限制

在 C++ 標準中(特別是 C++23 以前),下標運算子 [] 被嚴格定義為只能接受一個參數。雖然我們可以自由定義這個參數的型別,例如使用 double(選項 C)來做內插搜尋,或是使用自定義物件(選項 D)來實現類似字典(Map)的鍵值存取,甚至在鏈結串列(Option A)中模擬陣列行為,但我們無法改變它「一對一」的語法本質。如果你嘗試寫出 array[4, 8],編譯器會將內部的逗號視為「逗號運算子」,最終只會將最後一個數值 8 傳入函數,而無法達成傳遞多個獨立座標的目的。

▼ 還有更多解析內容

🏷️ 相關主題

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