C++第1课:第一个C++程序

C++与C语言


C++以C语言为基础发展而来,最初设计目标是“带类的C”(C with Classes),后续逐步扩展为支持面向对象、泛型编程等多范式语言。C++几乎完整兼容C语言的语法和特性,大部分C程序可不修改(或少量调整)在C++环境下编译运行。
C++和C语言两者共享相同的基本数据类型、运算符、控制结构(如if-else/for/while)和函数调用机制,均支持指针操作和手动内存管理。
C语言是面向过程的编程语言,强调函数驱动的逻辑分解。C++是面向对象的语言,支持面向对象(类、继承、多态)、泛型编程(模板)、元编程等,提供更灵活的代码组织方式。
C语言适合嵌入式系统、操作系统内核等要求极致性能或直接硬件操作的场景。C++适用于大型软件(如游戏引擎、数据库)、需高复用性与扩展性的复杂系统。

C++初印象

C++诞生于20世纪80年代,由本贾尼・斯特劳斯特卢普(Bjarne Stroustrup)博士在 C 语言的基础上发展而来,它最初被称为 “带类的 C”,后来正式命名为 C++ 。C++ 不仅继承了 C 语言高效、灵活、可直接访问硬件等特性,还引入了面向对象编程(OOP)的概念,包括封装、继承和多态,使得代码的组织和维护更加容易,同时支持泛型编程,进一步提高了代码的可重用性。​
从特性上看,C++ 是一种静态类型的编程语言,在编译时就会检查数据类型,这有助于发现早期错误,提高程序的稳定性。它对内存的管理非常灵活,开发者既可以使用自动内存管理(如栈上的变量),也能手动控制内存分配和释放(使用 new 和 delete 操作符),这在一些对内存使用要求苛刻的场景下,如嵌入式系统开发,显得尤为重要。此外,C++ 的代码执行效率极高,经过编译器的优化,生成的机器码能够充分利用硬件资源,在高性能计算领域,如科学计算、金融分析等领域应用广泛。​
在系统编程领域,它是开发操作系统、设备驱动程序、编译器等底层软件的重要工具。以 Windows NT 内核为例,其中就有大量的代码是用 C++ 编写的,C++ 对硬件的直接访问能力和高效的执行效率,使得操作系统能够稳定、高效地运行。在游戏开发领域,C++ 更是占据着主导地位。像知名的游戏引擎虚幻引擎(Unreal Engine),其核心部分就是用 C++ 开发的。C++ 能够高效地处理游戏中的图形渲染、物理模拟、AI 计算等复杂任务,为玩家带来流畅、逼真的游戏体验,像《绝地求生》等大型 3A 游戏,都离不开 C++ 的强大支持。在嵌入式系统中,由于嵌入式设备资源有限,对程序的性能和内存占用要求严格,C++ 的高效性和对硬件的直接控制能力,使其成为嵌入式软件开发的理想选择,如汽车电子系统、智能家居设备中的固件开发,常常会用到 C++ 。

第一个C++程序

“Hello World” 程序是学习C++迈出的第一步,下面是这个经典程序的代码:​

// 包含输入输出流头文件​
#include <iostream> ​
// 使用标准命名空间​
using namespace std; ​
​
int main() {​
// 输出Hello World!到控制台,并换行​
cout << "Hello World!" << endl; ​
// 返回0,表示程序正常结束​
return 0; ​
}​


逐行对代码进行解读:
① // 包含输入输出流头文件
这是一条注释,注释是对代码的解释说明,编译器会忽略注释内容。在 C++ 中,单行注释使用//,从//开始到本行末尾的内容都是注释。注释能让代码更易读,无论是自己日后维护代码,还是他人阅读代码,都能快速理解代码意图。​
②#include <iostream>
这是一条预处理指令,#include的作用是将指定的头文件内容包含到当前源文件中。<iostream>是 C++ 标准库中的输入输出流头文件,它包含了用于输入输出操作的函数和对象,例如后面用到的cout和endl,如果没有包含这个头文件,使用cout和endl时会报错。③ using namespace std
C++ 中的命名空间(namespace)是为了避免不同代码模块中标识符(如变量名、函数名、类名等)的命名冲突。std是 C++ 标准库的命名空间,标准库中的所有标识符都定义在std命名空间中。using namespace std;表示使用std命名空间,这样在代码中就可以直接使用std命名空间中的标识符,而无需每次都加上std::前缀。不过在大型项目中,为避免潜在的命名冲突,通常不建议全局使用using namespace std;,而是更精确地指定需要使用的标识符,如using std::cout; using std::endl; 。​
④ int main()
main函数是 C++ 程序的入口点,每个 C++ 程序都必须有一个main函数。程序从main函数的第一行代码开始执行,int表示main函数的返回值类型为整数。在大多数操作系统中,程序执行结束后返回给操作系统一个整数值,0 通常表示程序正常结束,非零值表示程序执行过程中出现了错误。​
⑤ cout << "Hello World!" << endl
这是一条输出语句。cout是std命名空间中的标准输出流对象,通常与控制台(屏幕)关联,用于将数据输出到控制台。<<是流插入运算符,在这里用于将右侧的数据(字符串"Hello World!"和endl)插入到cout输出流中,从而输出到屏幕上。endl是一个特殊的操纵符,它表示换行并刷新输出缓冲区,即输出完"Hello World!"后会换行,并且确保输出内容立即显示在屏幕上 。​
⑥ return 0
这行代码表示main函数的结束,并返回 0 给操作系统,告知操作系统程序已正常执行完毕。在 C++11 及以后的标准中,如果main函数末尾没有显式的return语句,编译器会自动在末尾插入return 0; 。

C++编译器

GCC/G++

GCC(GNU Compiler Collection)是GNU项目开发的多语言编译器套件,支持C、C++、Fortran、Ada、Go等编程语言的编译。最初命名为GNU C Compiler,后因功能扩展更名为“编译器套件”。G++则是GCC中专门处理C++代码的前端编译器,提供C++标准库支持及语法解析功能。
GCC包含各语言对应的编译器前端(如gcc处理C,g++处理C++),后端统一由中间代码生成目标平台的机器码。
GCC是跨平台编译器套件,支持Linux、BSD、Windows等系统,适配x86、ARM、MIPS等多种硬件架构。严格遵循C/C++语言标准(如C11、C++17)。
GCC虽然是跨平台编译器套件,但一般是在Linux系统下使用,Linux的每个发行版都提供GNU C++编译器,通常已经安装。
将前面的“Hello World”程序代码通过文本编辑器保存为“HelloWorld.cpp”文件,可以方便地使用下面的命令对其进行编译:
g++ HelloWorld.cpp
按照约定,生成的二进制文件默认名称是a.out,可以使用输出标记参数(-o)来指定输出文件名称:
g++ HelloWorld.cpp -o HelloWorld
如果需要在Windows下运行GCC编译器,需要在Windows系统下安装 MinGW(Minimalist GNU for Windows)来获取 GCC 和 G++ 编译器。

Clang‌编译器

Clang 是一个开源的编译器前端,专为C、C++、Objective-C 和 Objective-C++ 等编程语言设计,属于 LLVM(Low-Level Virtual Machine)项目的一部分。Clang 作为 LLVM 的前端,负责源码的‌词法分析、语法解析、语义检查和生成中间表示(IR)‌,而 LLVM 则负责优化和生成机器码。这种分离使工具链更灵活,便于集成其他工具。
在Linux(Ubuntu/Debian)平台下,输入下面的命令可以安装Clang编译器:

# 更新软件源
sudo apt update

# 安装 Clang
sudo apt install clang

# 验证安装
clang --version

建议安装完整开发工具链:

sudo apt install build-essential llvm lldb

 

编译HelloWorld.cpp的命令:
clang++ HelloWorld.cpp -o HelloWorld -std=c++11
参数-std=c++11用于显式指定使用 C++11 语言标准。

MSVC编译器

MSVC(Microsoft Visual C++)编译器是微软开发的C/C++编译工具链,主要用于Windows平台的软件开发。
MSVC默认集成到Visual Studio IDE开发环境中使用,若需要使用MSVC编译器,需要安装Visual Studio IDE开发工具。MSVC虽然可编译跨平台代码,但生成的文件通常仅限Windows运行。跨平台项目常用GCC或Clang。

集成开发环境

Visual Studio IDE


Visual Studio 是微软开发的集成开发环境(IDE),主要用于 Windows 平台上的软件开发,支持多种编程语言(如 C#, C++, Python, JavaScript 等)和跨平台开发。
当前最新版本是Visual Studio 2022,它分为Community 版、Professional 版和Enterprise 版。Community 版是免费版本,供个人开发者、开源项目或小型团队使用。Professional 版面向专业开发者,含高级调试工具、Azure 集成和企业许可证。Enterprise 版大型企业适用,含代码审查、架构验证和高级测试工具(如 IntelliTest)。上述版本都可通过 Visual Studio 官网下载安装程序,安装时选择对应版本。
应用Visual Studio创建C++项目步骤:
新建项目:打开 Visual Studio,在起始页面选择 “创建新项目”。在弹出的 “创建新项目” 窗口中,筛选项目类型为 “C++”,然后选择 “空项目” 模板,点击 “下一步”。在 “配置新项目” 页面,为项目命名(例如 “HelloWorld”),选择项目保存位置,点击 “创建”。​
创建源文件:在 “解决方案资源管理器” 中,右键点击项目名称,选择 “添加”->“新建项”。在 “添加新项” 窗口中,选择 “C++ 文件 (.cpp)”,为文件命名(如 “HelloWorld.cpp”),点击 “添加”。​
输入代码:在新建的HelloWorld.cpp文件中,输入相关程序代码。​
编译运行:点击菜单栏中的 “调试”->“开始执行 (不调试)”(快捷键 Ctrl+F5),或者点击工具栏上的绿色三角形 “本地 Windows 调试器” 按钮旁边的下拉箭头,选择 “开始执行 (不调试)”。如果代码没有语法错误,会弹出控制台窗口,显示 “Hello World”。

Dev-C++

Dev-C++是一款适用于 Windows 平台的轻量级 C/C++ 集成开发环境(IDE),简单易用,适合初学者使用。
Dev-C++整个安装包约 84MB1,界面简洁无冗余插件,降低学习成本。集成编辑器、编译器、调试器等基础工具链,开箱即用。默认集成 ‌MingW64/TDM-GCC 编译器‌,支持 C++11 标准并兼容 C++98标准。