第一章:预备知识 | C++ Primer Plus 重点带看
C++ 概念
C++ 是在 C 语言基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。
严格来说,C++ 是 C 语言的超集,绝大多数合法的 C 代码都可以直接在 C++ 中编译运行,但并非所有 C 程序都天然是合法 C++ 程序(C 与 C++ 存在少量语法和语义差异)。
过程化编程 vs 面向对象编程(Object-Oriented Programming,OOP)
- 过程化编程:以算法 / 流程为中心,关注“如何一步步完成任务”。
- OOP :以数据为中心,将数据与操作数据的方法绑定在一起,设计与现实问题匹配的数据结构与行为。。
对象与类
程序 = 数据 + 算法
任何计算机程序本质都由两部分构成:
- 数据:程序处理、存储的信息。
- 算法:处理数据的逻辑、步骤与方法。
泛型编程
泛型编程的核心是编写与具体数据类型无关的通用代码。
目的是只需定义一次函数或类,就能适用于多种不同类型,大幅减少重复代码,提高复用性。
C++ 源文件扩展名
C++ 源代码文件没有统一强制后缀,不同编译器 / 系统有各自常用的约定。
日常开发主流后缀:
- Linux / macOS:.cc、.cpp
- Windows:.cpp
C++实现 | 源代码文件的扩展名 |
UNIX | .C、.cc、.cxx、.c |
GNU C++ | .C、.cc、.cxx、.cpp、.c++ |
Digital Mars | .cpp、.cxx |
Borland C++ | .cpp |
Watcom | .cpp |
Microsoft Visual C++ | .cpp、.cxx、.cc |
Freestyle CodeWarrior | .cp、.cpp、.cc、.cxx、.c++ |
C++ 实现与工具
Linux 常用编译器:g++。
g++ 是 GNU 项目提供的自由开源 C++ 编译器,属于 GCC 套件,是 Linux 下目前主流的 C++ 编译工具。
库(Library)
库是预编译好的功能模块集合,包含函数、类、变量等实现,程序可以直接调用库中的功能,无需重复开发底层逻辑。
在 C++ 中,根据链接方式与加载时机,库主要分为两大类:
1. 静态库(Static Library):编译时打包,运行时独立
- Windows 后缀:.lib
- Linux/macOS 后缀:.a(archive)
- 特点:编译链接时,把库的代码直接复制、嵌入到可执行文件中。运行时不再依赖外部库文件,可独立运行。优点:部署简单,不依赖环境。缺点:可执行文件体积大,多个程序共用时会重复占用内存。
2. 动态库(Dynamic Library / 共享库):编译时留坑,运行时加载
- Windows 后缀:.dll
- Linux/macOS 后缀:,so(shared object)
- 特点:编译时只记录引用关系,不复制代码。程序运行时才从系统中加载动态库。多个程序可共享同一份库,节省内存与磁盘空间。优点:体积小、便于更新(替换库文件即可升级);缺点:部署时必须保证动态库存在,否则无法运行。
C++ Primer Plus 精读|从入门到面试,重点内容全程带看。 本专栏以《C++ Primer Plus》为蓝本,逐章提炼必考知识点、易错点、面试高频考点,跳过冗余示例,直击语法本质与工程实践,帮你高效吃透 C++ 基础,夯实底层开发必备能力。