C++ 語言介紹
C++ 語言歷史和設計哲學
C++ 是一種功能強大、通用性強的程式語言,由 Bjarne Stroustrup 在 C 語言的基礎上擴展創建,最初名為「帶類的 C」。它的設計理念是「零開銷原則」,即不使用的特性不應帶來任何性能開銷。C++ 融合了高級和低級程式設計能力,使其適用於廣泛的應用場景。
與 JavaScript 的對比概述
特性 | JavaScript | C++ |
---|---|---|
範式 | 多範式(主要為函數式、物件導向、事件驅動) | 多範式(物件導向、泛型、程序式) |
類型 | 動態類型,弱類型 | 靜態類型,強類型 |
執行 | 解釋型(在瀏覽器/Node.js 中進行 JIT 編譯) | 編譯型 |
記憶體管理 | 自動(垃圾回收) | 手動(指標、new /delete )、智能指標 |
性能 | 通常較慢(由於解釋/垃圾回收) | 通常較快(編譯型,底層控制) |
用例 | Web 開發(前端/後端)、行動應用、桌面應用 | 系統程式設計、遊戲開發、嵌入式系統、高性能計算 |
編譯型 vs 解釋型語言
JavaScript(解釋型/JIT 編譯): JavaScript 程式碼通常由解釋器(如瀏覽器的 JavaScript 引擎或 Node.js)執行。雖然現代 JavaScript 引擎使用即時(JIT)編譯將程式碼在運行時轉換為機器碼以提高性能,但其核心特點是程式碼不會預先編譯成獨立的執行檔。
C++(編譯型): C++ 程式碼在執行前必須編譯成機器碼。這個過程包括:
- 預處理: 處理
#include
和#define
等指令。 - 編譯: 將預處理後的程式碼轉換為組合語言程式碼。
- 組合: 將組合語言程式碼轉換為機器碼(目標檔案)。
- 連結: 將目標檔案和函式庫組合為一個可執行程式。
這個編譯步驟允許進行廣泛的優化,並生成高效的本地程式碼。
C++ 應用場景和優勢
應用場景:
- 系統程式設計: 作業系統、設備驅動、嵌入式系統。
- 遊戲開發: 高性能遊戲引擎(例如 Unreal Engine、Unity 的核心)。
- 高性能計算: 科學模擬、金融建模、交易系統。
- 圖形和多媒體: 圖像/影片處理、3D 圖形。
- 資料庫: 資料庫系統(例如 MySQL、MongoDB)。
- 編譯器和解釋器: 構建程式語言工具。
優勢:
- 性能: 由於直接記憶體存取和編譯,性能接近裸機。
- 控制: 對硬體資源和記憶體的精細控制。
- 可擴展性: 適用於大型複雜系統。
- 可移植性: 程式碼可以在各種平台上編譯和運行。
- 豐富的生態系統: 廣泛的函式庫和工具。
開發環境搭建
要編寫和運行 C++ 程式碼,通常需要:
- 文字編輯器或 IDE: Visual Studio Code、Visual Studio、CLion、Eclipse 等。
- C++ 編譯器: GCC (GNU Compiler Collection)、Clang、MSVC (Microsoft Visual C++)。
範例設定(Linux/macOS 與 GCC/Clang): 安裝 build-essential (Linux) 或 Xcode Command Line Tools (macOS)。
# 在 Ubuntu/Debian 上sudo apt updatesudo apt install build-essential# 在 macOS 上xcode-select --install
你的第一個 C++ 程式
讓我們編寫一個簡單的「Hello, World!」 C++ 程式。
正在加载...
編譯和連結過程
要編譯並運行 C++ 「Hello, World!」 程式(假設你將其保存為 hello.cpp
):
-
編譯:
g++ hello.cpp -o hellog++
:C++ 編譯器(GCC 的一部分)。hello.cpp
:你的原始碼檔案。-o hello
:指定輸出的可執行檔案名為hello
。
-
運行:
./hello這將執行編譯後的程式,並在你的控制台打印「Hello, World from C++!」。
練習題:
- C++ 這樣的編譯型語言與 JavaScript 這樣的解釋型語言之間主要區別是什麼?
- 列舉三個 C++ 優於 JavaScript 的常見應用領域,並解釋原因。
- 描述編譯和連結一個簡單的 C++ 程式所涉及的步驟。
專案構想:
- 用 C++ 創建一個簡單的命令行計算器,可以執行基本的算術運算(加、減、乘、除)。