本單元常犯錯誤總覽
| # | 錯誤描述 | 錯誤類型 | ✗ 錯誤寫法 | ✓ 正確寫法 |
|---|---|---|---|---|
| 1 | struct 定義結尾漏了分號 | 編譯錯誤 | struct point { int x, y; } |
struct point { int x, y; }; |
| 2 | 建構子寫了回傳型態 | 編譯錯誤 | void Fraction() { ... } |
Fraction() { ... } |
| 3 | 只寫了有參數建構子,卻宣告 Fraction f; |
編譯錯誤 | 只有 Fraction(a, b) 版本 |
補無參數建構子,或用預設參數合併 |
| 4 | 建構子參數跟成員變數同名 | 邏輯錯誤(垃圾值) | Fraction(long long p, ...) { p = p; } |
參數改名:Fraction(long long a, ...) |
| 5 | operator < 相等時回傳 true |
UB(RE/WA/TLE) | return score >= b.score; |
return score > b.score; |
| 6 | operator < 忘了結尾的 const |
部分用法編譯錯誤 | bool operator < (const student &b) { } |
bool operator < (const student &b) const { } |
| 7 | 大括號初始化順序跟成員宣告順序不符 | 編譯錯誤/資料錯位 | student s = {60, "temmie"}; |
照宣告順序:{"temmie", 60} |
| 8 | 沒多載 >> 就整包 cin >> s |
編譯錯誤 | cin >> s; |
逐成員讀,或多載 >>(13.7) |
| 9 | 無參數建構子呼叫時加了小括號 | 編譯錯誤 | Fraction x();(變成函式宣告) |
Fraction x; |