#define defaultSize = 128 // 錯誤寫法
class AString {
public:
AString(int sz = defaultSize); // 構造函數預設參數使用宏
// ...
};
宏定義 `#define defaultSize = 128` 會將 `defaultSize` 替換為 `= 128`,導致構造函數聲明變為:
AString(int sz = = 128); // 語法錯誤:雙等號
// 方式一:宏定義去掉等號(傳統 C 風格)
#define defaultSize 128
// 方式二:使用 const 常量(C++ 推薦,有類型檢查、作用域)
const int defaultSize = 128;
// 方式三:C++11 constexpr(編譯期常量)
constexpr int defaultSize = 128;
將 `#define defaultSize = 128` 改為 `constexpr int defaultSize = 128;`,即可消除編譯錯誤,同時獲得類型安全與作用域控制。