langShift

C++ 语言介绍

C++ 语言历史和设计哲学

C++ 是一种功能强大、通用性强的编程语言,由 Bjarne Stroustrup 在 C 语言的基础上扩展创建,最初名为“带类的 C”。它的设计理念是“零开销原则”,即不使用的特性不应带来任何性能开销。C++ 融合了高级和低级编程能力,使其适用于广泛的应用场景。

与 JavaScript 的对比概述

特性JavaScriptC++
范式多范式(主要为函数式、面向对象、事件驱动)多范式(面向对象、泛型、过程式)
类型动态类型,弱类型静态类型,强类型
执行解释型(在浏览器/Node.js 中进行 JIT 编译)编译型
内存管理自动(垃圾回收)手动(指针、new/delete)、智能指针
性能通常较慢(由于解释/垃圾回收)通常较快(编译型,底层控制)
用例Web 开发(前端/后端)、移动应用、桌面应用系统编程、游戏开发、嵌入式系统、高性能计算

编译型 vs 解释型语言

JavaScript(解释型/JIT 编译): JavaScript 代码通常由解释器(如浏览器的 JavaScript 引擎或 Node.js)执行。虽然现代 JavaScript 引擎使用即时(JIT)编译将代码在运行时转换为机器码以提高性能,但其核心特点是代码不会预先编译成独立的执行文件。

C++(编译型): C++ 代码在执行前必须编译成机器码。这个过程包括:

  1. 预处理: 处理 #include#define 等指令。
  2. 编译: 将预处理后的代码转换为汇编代码。
  3. 汇编: 将汇编代码转换为机器码(目标文件)。
  4. 链接: 将目标文件和库组合成一个可执行程序。

这个编译步骤允许进行广泛的优化,并生成高效的本地代码。

C++ 应用场景和优势

应用场景:

  • 系统编程: 操作系统、设备驱动、嵌入式系统。
  • 游戏开发: 高性能游戏引擎(例如 Unreal Engine、Unity 的核心)。
  • 高性能计算: 科学模拟、金融建模、交易系统。
  • 图形和多媒体: 图像/视频处理、3D 图形。
  • 数据库: 数据库系统(例如 MySQL、MongoDB)。
  • 编译器和解释器: 构建编程语言工具。

优势:

  • 性能: 由于直接内存访问和编译,性能接近裸机。
  • 控制: 对硬件资源和内存的精细控制。
  • 可扩展性: 适用于大型复杂系统。
  • 可移植性: 代码可以在各种平台上编译和运行。
  • 丰富的生态系统: 广泛的库和工具。

开发环境搭建

要编写和运行 C++ 代码,通常需要:

  1. 文本编辑器或 IDE: Visual Studio Code、Visual Studio、CLion、Eclipse 等。
  2. 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 update
sudo apt install build-essential
# 在 macOS 上
xcode-select --install

你的第一个 C++ 程序

让我们编写一个简单的“Hello, World!” C++ 程序。

正在加载...

编译和链接过程

要编译并运行 C++ “Hello, World!” 程序(假设你将其保存为 hello.cpp):

  1. 编译:

    g++ hello.cpp -o hello
    • g++:C++ 编译器(GCC 的一部分)。
    • hello.cpp:你的源代码文件。
    • -o hello:指定输出的可执行文件名为 hello
  2. 运行:

    ./hello

    这将执行编译后的程序,并在你的控制台打印“Hello, World from C++!”。


练习题:

  1. C++ 这样的编译型语言与 JavaScript 这样的解释型语言之间主要区别是什么?
  2. 列举三个 C++ 优于 JavaScript 的常见应用领域,并解释原因。
  3. 描述编译和链接一个简单的 C++ 程序所涉及的步骤。

项目构想:

  • 用 C++ 创建一个简单的命令行计算器,可以执行基本的算术运算(加、减、乘、除)。