1
为什么学 C++,以及第一个程序
Why C++ · Setup · Hello World · std
如果你已经学过 C(上一页),那 C++ 对你来说不是从零开始,而是"给 C 装上一堆自动换挡的辅助驾驶"。C++ 把 malloc/free 包装成智能指针、把手写链表换成 STL 现成的 vector/map,让你在不牺牲性能的前提下少犯内存错误。
论C++ 和 C 到底什么关系
是超集:绝大多数 C 代码能直接当 C++ 编译跑。
但更安全:C++ 有 bool、引用、nullptr、自动类型推导、类、模板、异常,还有标准库 STL。
现代 C++(C++11 起)和老 C++(98/03)几乎是两门语言。本页全程讲现代写法,那种 new/delete 满天飞、裸指针乱飞的老式代码,了解即可,别学。
编译与运行
C++ 编译器不叫 gcc,叫 g++(或 clang++)。指定标准用 -std=c++20。
main.cpp —— 第一个 C++ 程序
#include <iostream> // C++ 的输入输出库
int main() {
std::cout << "Hello, C++20!\n"; // cout 是"输出流",<< 是往里面塞东西
return 0;
}
编译运行
$ g++ -Wall -std=c++20 main.cpp -o main
$ ./main
Hello, C++20!
命名空间 std 与 using namespace std
C++ 标准库的所有名字都住在 std 这个"房间"里,所以写 std::cout。你可以在文件开头 using namespace std; 图省事,从此只写 cout。
关于 using namespace std
小玩具、刷题程序里写着方便,没人怪你。但在头文件和大型工程里别这么干——它把整个 std 全倒进来,容易和你自己的名字撞车。工程上推荐"按需引入":using std::cout;,或者老老实实地写 std::。多打几个字母,换未来少 debug 几天,值。