農會 資訊管理類程式設計108 年第 30 題單選題
在C++語言中,下列何者為允許的被覆載運算子?
A>正確答案
B%正確答案
C&&正確答案
D.*
E!正確答案
A、B、C、E正確答案
C++多數運運算元可覆載,但成員存取、成員指標、範圍解析、條件運運算元、sizeof與typeid絕對不可覆載。
為什麼答案是 A、B、C、E
> 為關係運運算元,允許被覆載,常用於自訂類別物件的大小比較與排序。
考點:關係運運算元考點:算術運運算元考點:邏輯運運算元考點:不可覆載運運算元
載入中…
完整詳解
Pro · 無限重點 C++多數運運算元可覆載,但成員存取、成員指標、範圍解析、條件運運算元、sizeof與typeid絕對不可覆載。
記住「點、星點、雙冒號、問號冒號、sizeof」不可覆載。看到 .* 直接刪除,其餘算術與邏輯運運算元皆可。
逐選項分析
A關係運運算元✓ 正確
> 為關係運運算元,允許被覆載,常用於自訂類別物件的大小比較與排序。
B算術運運算元✓ 正確
% 為算術運運算元(取餘數),允許被覆載,可用於自訂類別的模運算設計。
C邏輯運運算元✓ 正確
&& 為邏輯運運算元,語法上允許覆載。但注意:覆載後會失去短路求值特性,實務不建議但考試算允許。
D不可覆載運運算元✕ 陷阱
.* 為成員指標存取運運算元,C++嚴格禁止覆載,以確保物件成員存取的底層記憶體機制不被破壞。
E邏輯運運算元✓ 正確
! 為邏輯NOT運運算元,允許被覆載,常用於自訂類別的布林狀態反轉或條件判斷。
C++ 運運算元覆載許可權總表
| 運運算元 | 符號 | 可否覆載 | 備註 |
|---|
| 成員指標存取 | .* | ❌ 不可 | 與 . 同樣禁止覆載 |
| 範圍解析 | :: | ❌ 不可 | 名稱空間與類別範圍 |
| 條件運運算元 | ?: | ❌ 不可 | 三元運運算元禁止 |
| 大小/型別 | sizeof / typeid | ❌ 不可 | 編譯期決定 |
| 邏輯AND/OR | && / || | ⭕ 可 | 會失去短路求值特性 |
| 關係/算術 | > < + - % 等 | ⭕ 可 | 最常被覆載的運運算元 |
考生常把 && 和 || 誤認為不可覆載,因為教科書會強調『不建議覆載』(會失去短路求值)。但題目問的是『允許(語法合法)』,所以它們是可以覆載的!另外 .* 和 ->* 也是常考的不可覆載陷阱。