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++ 创建一个简单的命令行计算器,可以执行基本的算术运算(加、减、乘、除)。