C++ 是什么
c-vs-c、why-use-c、环境、第一个程序。
C++ 是什么
这一课你将能做到
- 说清楚 C++ 的编译执行模型,以及它和 Java「编译成字节码 + JVM 运行」的本质区别
- 在本机确认 g++(或 MSVC/clang)可用,手动编译并运行第一个 C++ 程序
- 读懂一个最小 C++ 程序的每一行:
#include、main、std::cout各自在做什么
为什么要学
本站的在线判题功能,判题沙箱本身就是 C++ 写的:拿到用户提交的代码后,要毫秒级完成「编译 → 起进程 → 跑测试点 → 回收资源」,每一步都压着性能红线,这正是 C++ 的主场。游戏引擎、高频交易、嵌入式、数据库内核,用的也是同一套逻辑。
如果你已经会 Java:C++ 没有 JVM,也没有垃圾回收。Java 源码编译成 .class 字节码交给 JVM 解释/JIT 执行;C++ 源码直接编译成目标平台的机器码,操作系统直接加载运行。这带来两个后果:一是 C++ 程序跑起来更快、内存更省;二是跨平台要「每个平台各编译一次」,不像 Java 一次编译到处运行。
本轨对齐 C++17/20 标准,不背标准条文,只练能写进真实项目的默认习惯。
先建立图像
Java 的路径:
.java → javac → .class 字节码 → JVM(解释 + JIT)→ CPU
↑ 运行时还在干活
C++ 的路径:
.cpp / .hpp → 预处理 → 编译 → 汇编 → 链接 → 可执行文件 → CPU
↑ 这四步在运行前全部做完,运行时没有任何「中间商」
判题沙箱评测用户代码时,本质上就是替用户走一遍右边这条流水线,再掐表计时——所以理解编译模型,是理解「C++ 为什么快」的第一步。
跟着做
步骤 1:确认编译器
Windows 推荐 MinGW-w64(或 VS + C++ 工作负载),macOS 用 xcode-select --install,Linux 用 sudo apt install g++。打开终端验证:
g++ --version
能打印出版本号(如 g++ (MinGW-w64) 13.2.0)就说明环境通了。判题沙箱内部同样会先探测编译器版本再决定编译参数。
步骤 2:写第一个程序
新建文件夹 cpp-lab,在里面新建 hello.cpp:
#include <iostream>
int main() {
std::cout << "Hello, C++!" << std::endl;
return 0;
}
步骤 3:编译并运行
在终端里(进入 cpp-lab 目录):
g++ -std=c++17 hello.cpp -o hello
./hello # Windows 下是 .\hello.exe 或 hello
输出:
Hello, C++!
这条命令做了四件事:预处理(展开 #include <iostream> 的全部内容)→ 编译成汇编 → 汇编成目标文件 → 链接标准库,最终生成一个可以直接运行的可执行文件。-std=c++17 指定按 C++17 标准编译,本轨全程带上它。
步骤 4:逐行理解
#include <iostream> // 预处理指令:把输入输出库的头文件「复制粘贴」进来
// C++ 的 include 是文本替换,不是 Java 的 import
int main() { // 程序入口。操作系统加载可执行文件后从 main 开始执行
std::cout << "Hello, C++!" << std::endl;
// std::cout 是标准输出流对象,<< 是流插入运算符,可以连续拼接
// std:: 是命名空间,表示这个名字属于标准库——相当于 Java 的包名
// std::endl 输出换行并刷新缓冲区;"\n" 只换行不刷新,更快
return 0; // 返回 0 表示程序正常结束,非 0 是错误码
}