| 特性 | 強類型 (C/C++, Java, C#) | 弱類型 (JS, Python, PHP) |
|---|---|---|
| 變數宣告 | 必須指定型別 | 無需指定,自動推導 |
| 型別變更 | 需強制/隱式轉換 | 隨時賦予不同型別值 |
| 編譯期檢查 | 完整型別檢查 | 極少,運行期決定 |
| 執行效能 | 高 (無型別檢查開銷) | 較低 (需運行期型別維護) |
| 適用場景 | 系統級、大型工業專案 | Web 開發、腳本、快速原型 |
C++ 開發者想將鏈表、樹、圖等資料結構封裝為標準庫組件,但節點資料型別無法預知:可能是 int、double、string、Student、二進位資料... 強類型要求編譯期確定型別,導致必須為每種型別重寫一遍資料結構代碼 —— 程式碼膨脹、維護地獄。
class Point {
public $x, $y;
function __construct($x, $y) { $this->x=$x; $this->y=$y; }
}
$p = new Point(10, 20); // 整數
$p = new Point(24.56, "東京"); // 浮點 + 字串
$p = new Point("東京", "北緯"); // 字串
PHP 天生不敏感型別,單一類別處理所有型別。
template <typename T>模板是 C++ 為解決「強類型下資料結構封裝型別未知」而創造的泛型編程機制。它讓演算法與資料結構脫離具體型別,在編譯期按需生成型別安全代碼,是 C++ 庫生態繁榮的基石,也是從 C++ 程式設計師邁向庫開發者的必經之路。