一、为什么要学 C++

性能强悍

1. 手动内存管理 C++ 允许开发者精确控制内存的分配与释放时机。(Java、Python 等语言依赖垃圾回收机制(GC)自动管理内存,但 GC 的触发时机不可预测,带来的程序的短暂停顿在游戏、机器人控制等实时系统中,这种停顿是致命的。)

2. 大规模数据处理优势显著 C++ 可以精确控制数据在内存中的排列方式。
在处理海量数据时,这种能力带来的性能差距往往是数量级的。

3. 直接编译为本地机器码 C++ 代码经编译器处理后直接生成 CPU 可执行的机器码,
程序启动即全速运行,直观感受就是快。


底层控制力强

1. 指针与地址操作——直接触摸内存 C++ 可以实现自定义内存池,甚至操作硬件映射的地址空间。
这种对内存的掌控力,是绝大多数高级语言刻意屏蔽掉的。

2. 内联汇编与 SIMD 指令集——直接指挥 CPU C++ 允许在代码中嵌入汇编指令,在编译器力有不逮时亲自接管优化。更进一步,通过 SIMD 指令集可以一条指令同时处理多个数据
相当于绕过普通计算流程,直接向 CPU 下达批量作业命令。

3. 直接调用操作系统接口——直接指挥 OS C++ 可以跳过标准库的层层封装,直接向操作系统发起请求:申请内存页、读写文件、管理进程、操作窗口……
相当于绕开中间商,让 OS 亲自下场干活。


众多核心领域不可替代
领域代表项目
游戏引擎Unreal Engine、Unity 底层、CryEngine——实时渲染对每一帧的耗时有严苛要求
操作系统 / 驱动Windows 内核组件、macOS 部分子系统、大量硬件驱动程序
数据库MySQL、PostgreSQL、RocksDB、ClickHouse——毫秒级查询背后是 C++
AI / 深度学习框架PyTorch、TensorFlow 的核心算子全部由 C++ 实现,Python 只是调用前端
浏览器Chrome(V8 引擎)、Firefox——页面解析、渲染、JS 执行全靠 C++
嵌入式 / 机器人ROS 2 核心库、工业控制系统、自动驾驶中间件(如 Autoware)
高频交易微秒级延迟要求极为严苛,目前只有 C++ 能稳定达到
编译器 / 工具链LLVM、Clang、GCC 本身就是用 C++ 编写的

二、1.Windows 安装 Visual Studio 2022

1. 系统要求(简要)

  • Windows 10/11 64 位(1607 及以上)
  • 内存 ≥4GB(推荐 8GB+)
  • 磁盘:纯 C++/.NET 常用组合约 20–40GB 空闲

2. 下载安装程序

  1. 浏览器搜索 Visual Studio 2022 官网,进入微软官方下载页。
  2. 选择 Community(社区版,免费) → 下载 vs_community.exe。

3. 安装步骤(管理员权限)

  1. 右键 vs_community.exe → 以管理员身份运行。

  2. 首次加载后进入 Workloads(工作负载) 选择界面:

    常用组合建议(按需勾选):

    • ✅ 使用 C++ 的桌面开发(C/C++、MFC、控制台程序)
    • ✅ .NET 桌面开发(C#、WPF、WinForms)
    • ✅ ASP.NET 和 Web 开发(网站、API、前端)
    • ✅ Python 开发(可选)
  3. 安装位置(重要)

    • 建议把 IDE、缓存、SDK 都改到 非 C 盘(如 D:\VS2022),路径不要中文、空格。
  4. 语言包 → 勾选 中文(简体)。

    1. 点击 安装,等待下载 + 安装(网络好约 20–40 分钟)。

    2. 完成后 重启电脑。

4. 首次启动与中文界面

  1. 开始菜单打开 Visual Studio 2022。

  2. 首次登录可跳过(以后可微软账号登录)。

  3. 设置界面:

    • 主题:选 蓝色 / 深色
    • 语言:确认 中文(简体)
  4. 进入主界面。

5. 测试:创建并运行一个 C++ 控制台程序

  1. 新建 → 项目 → 搜索 控制台应用 → 选 C++ 控制台应用。
  2. 命名(如 HelloTest)→ 确定。
  3. 自动生成代码,直接点击 本地 Windows 调试器(▶)。
  4. 控制台输出 Hello World! 即安装成功。

三、理解编译步骤(了解即可)


① 源代码 .cpp

在 VS2022 中创建项目,编写好 C++ 代码,保存为 .cpp 文件。


② 预处理

  • 输入: .cpp 源文件
  • 输出: .i 文件(展开后的纯文本 C++ 代码)

处理所有以 # 开头的指令,本质上是一个文本替换过程,不涉及任何真正的编译工作:

指令作用
#include找到对应头文件,将其内容完整复制粘贴到当前位置
#define将所有宏名替换为对应的值或表达式
#ifdef / #ifndef根据条件保留或删除对应代码块
注释所有 // 和 /* */ 注释全部清除

③ 编译

  • 输入: .i 预处理后的文本文件
  • 输出: .s 汇编代码文件

整个流程中技术含量最高的一步,分三个阶段完成:

  1. 词法 + 语法分析: 把代码拆解为 token,检查语法是否合法——写错语法时报的错就来自这里
  2. 语义分析: 检查逻辑是否合理,包括类型匹配、变量是否声明、函数参数是否正确
  3. 优化 + 生成汇编: 删除死代码、展开循环、合并重复计算,最终输出汇编代码

④ 汇编

  • 输入: .s 汇编代码文件
  • 输出: .o 目标文件(二进制)

汇编器将汇编指令一对一翻译成二进制机器码。此时的 .o 文件虽然已经是机器码,但仍不完整——调用的外部函数还只是空白占位符,等待下一步填充。


⑤ 链接

  • 输入: 多个 .o 目标文件 + 库文件(.a / .lib / .so / .dll)
  • 输出: 最终可执行文件(Windows 下为 .exe)

将所有零散模块拼合成一个完整程序:

  1. 符号解析: 找到每个 .o 文件中缺失的函数实现,将地址一一填入
  2. 库的链接: 将程序依赖的标准库(如 std::cout)或第三方库合并进来
  3. 地址分配: 为所有函数和变量分配最终内存地址,替换全部占位符

四、第一个 Hello World


#include <iostream>   // 引入输入输出流头文件,使用 `cout`、`cin` 等功能前必须写这一行。
using namespace std;  // `endl` 这些东西的完整名称其实是 `std::cout`、`std::endl`,前缀 `std::` 表示它们属于标准库的命名空间。写了这一行之后,`std::` 前缀可以省略不写,代码更简洁。初学阶段固定写上即可。

int main()//程序的入口函数,程序启动后从这里开始执行。一个 C++ 程序有且只有一个 `main` 函数,`int` 表示它最终会返回一个整数
{
    cout << "Hello, World!" << endl;
    //`cout` 是标准输出流,可以理解为"控制台输出"
	//`<<` 是输出运算符,表示把右边的内容发送给 `cout` 显示出来
	//`"Hello, World!"` 是字符串,输出时显示引号内的文字
	//`endl` 表示换行,输出完当前内容后光标移到下一行
	//除了字符串,也可以直接输出变量的值,例如 `cout << x << endl;`
    return 0;
    //通知操作系统程序正常结束,`0` 是约定俗成的"成功"信号。这是 C++ 的语法惯例,即使不写,执行到最后一个}时程序也会自动停止,但建议养成写的习惯。
}

五、常见报错速查


编译时报错(红色波浪线 / 错误列表)
报错信息原因解决方法
expected ';'语句末尾缺少分号在对应行末尾补上 ;
undeclared identifier变量或函数未声明就使用检查是否定义过,或是否忘记头文件
cannot convert ... to ...类型不匹配检查赋值或函数返回值的类型
expected '}'大括号没有闭合检查每个 { 是否都有对应的 }
'cout' undeclared缺少头文件或命名空间补上 #include <iostream> 和 using namespace std;

六、CMakeLists.txt 简单介绍

C++ 项目文件一多,手动编译每个文件会非常麻烦。CMakeLists.txt 就是用来解决这个问题的——写一个配置文件告诉 CMake "项目长什么样",它自动帮你把所有编译工作组织好。

下面是一个最精简的 CMake 配置:

cmake

cmake_minimum_required(VERSION 3.10)  # CMake 最低版本要求
project(HelloWorld)                    # 项目名称
add_executable(HelloWorld main.cpp)   # 用 main.cpp 生成可执行文件

对应的项目文件结构:

MyProject/
├── CMakeLists.txt    ← CMake 配置文件
└── main.cpp          ← 源代码

现阶段了解这个文件的作用即可,后续引入 OpenCV、MuJoCo 等第三方库时自然会深入用到。


七、小结 + 明日预告

本节回顾:

  1. C++ 应用领域广泛,在游戏、机器人、AI 框架等核心领域不可替代
  2. 安装并配置 Visual Studio 2022
  3. 理解从源代码到可执行文件的编译过程
  4. 编写第一个 Hello World 程序
  5. 了解常见报错类型及快速定位方法
  6. 初步认识 CMakeLists.txt 的作用

明日内容预告:变量、类型与运算符

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐