缺省構造函數(無參構造)能「無中生有」初始化對象。適合類數值類型、容器(空初始化),但**許多領域對象強制需外部數據**(如設備必須有公司 ID)。
EquipmentPiece bestPieces[10]; // 錯誤
EquipmentPiece *bestPieces = new EquipmentPiece[10]; // 錯誤
對策三種:
EquipmentPiece arr[] = { EquipmentPiece(ID1), ... };(僅非堆數組)EquipmentPiece* arr[10]; 後逐個 new(需手動刪除、額外指針空間)new (&arr[i]) EquipmentPiece(ID) 構造;銷毀時逆序調用析構函數 + operator delete[] 釋放原始內存。最高效但複雜、易錯。new T[size] 要求缺省構造。std::vector 無此要求,但許多舊/簡陋模板有。長期看模板設計成熟後問題緩解。ID = UNSPECIFIED),但導致成員函數須檢查有效性、拋異常、效率/代碼膨脹、失去「構造即有效」保證。**缺省構造函數若無法保證對象有意義初始化,寧缺勿濫**。雖帶來使用限制,但換來正確性保證、效能、代碼簡潔。使用時雖受限,但能信任對象狀態——這才是專業工程態度。