語法書 / AA 競程語法書 下冊 / 第十三單元 / 本單元常犯錯誤總覽

本單元常犯錯誤總覽

# 錯誤描述 錯誤類型 ✗ 錯誤寫法 ✓ 正確寫法
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;