好的!下面给你整理一份 C++ 基础知识 的清晰概览,适合初学者快速建立知识框架,也方便后期查漏补缺。
我会从最基础的部分开始,逐步介绍 C++ 相比 C 语言增加的重要特性,以及现代 C++(C++11/14/17/20)常用基础内容。
1. C++ 是什么?(一句话总结)
C++ 是 C 的超集 + 面向对象 + 泛型编程 + 高性能 的多范式编程语言。
2. 第一个程序(Hello World)
#include <iostream> // 标准输入输出头文件
int main() // 程序入口函数
{
std::cout << "Hello, World!" << std::endl; // 输出 + 换行
// 或使用 using namespace std; 后可写成 cout << "Hello, World!" << endl;
return 0; // 返回 0 表示正常结束
}
3. C++ 非常重要的基础特性(对比 C 语言)
| 特性 | 说明 | 示例代码 |
|---|---|---|
| 命名空间 | 解决命名冲突,std 是标准库的命名空间 | using namespace std; 或 std::cout |
| 输入输出 | 用 cin / cout 替代 scanf / printf | cin >> x; cout << x; |
| 引用(Reference) | 变量的别名,比指针更安全、更直观 | int &r = a; |
| 函数重载 | 同一函数名,不同参数列表 | void print(int); void print(double); |
| 缺省参数 | 函数参数可以有默认值(从右往左) | void func(int a = 10, int b = 20); |
| inline 函数 | 建议编译器内联展开,小函数性能优化 | inline int max(int a, int b) |
| const 正确性 | 更严格的常量正确性 | const int* / int* const / const int* const |
4. 基本数据类型(C++11/14 后更丰富)
| 类型组 | 常用类型 | 字节(通常) | 备注 |
|---|---|---|---|
| 整数 | int, short, long, long long | 4/2/4/8 | int 至少 16 位,通常 32 位 |
| 无符号 | unsigned int, size_t | 同上 | 常用在数组下标、内存大小 |
| 字符 | char, wchar_t, char8_t/16_t/32_t (C++20) | 1/2/1/2/4 | char 可存 ASCII 或 UTF-8 |
| 浮点 | float, double, long double | 4/8/8~16 | double 是常用浮点类型 |
| 布尔 | bool | 1 | true / false |
| nullptr | C++11 引入,空指针常量 | — | 替代 NULL |
| auto | C++11 自动类型推导 | — | auto x = 3.14; → double |
5. 变量初始化方式(强烈推荐现代写法)
int a = 10; // C 风格
int b(10); // 构造函数风格
int c{10}; // 统一初始化(C++11 起,最推荐)
int d{}; // 零初始化
auto e = 3.14; // 类型自动推导
6. 指针 vs 引用(非常重要!)
int a = 10;
// 指针
int* p = &a; // 可改指向,可为空
*p = 20; // 修改 a
p = nullptr; // 可以指向空
// 引用(必须初始化,不能改指向)
int& r = a; // r 是 a 的别名
r = 30; // 修改 a
// int& r2; // 错误!引用必须初始化
7. const 与 constexpr(现代 C++ 很常用)
const int a = 10; // 常量,不可改
constexpr int square(int x) { return x * x; } // 编译期计算
constexpr int b = square(5); // 编译期得到 25
8. 控制流(基本一致,但更推荐现代写法)
// 范围 for 循环(C++11,非常常用)
int arr[] = {1, 2, 3, 4};
for (int x : arr) {
std::cout << x << " ";
}
// auto + 范围 for
for (auto x : arr) { ... }
// 传统 for 也可以写成更现代的样子
for (size_t i = 0; auto x : arr) { ... } // C++20 if init
9. 函数相关(C++11/14/17/20 增强很多)
// 默认参数
void print(int x = 0, int y = 0);
// 函数重载
void print(int);
void print(double);
void print(const char*);
// 引用传参(推荐)
void swap(int& a, int& b);
// inline + constexpr 函数
inline constexpr int max(int a, int b) { return a > b ? a : b; }
10. 面向对象三大特性快速记忆
- 封装:把数据和操作数据的方法放到类里(private + public)
- 继承:代码复用(public / protected / private 继承)
- 多态:同一接口,不同实现(虚函数 + 虚析构函数)
简单例子:
class Animal {
public:
virtual void speak() const = 0; // 纯虚函数 → 抽象类
virtual ~Animal() = default; // 虚析构函数(非常重要!)
};
class Dog : public Animal {
public:
void speak() const override {
std::cout << "汪汪~\n";
}
};
快速学习路线建议(2025-2026 视角)
- 先掌握上面所有内容(大概 1–3 周)
- 学习 STL 常用容器:vector / string / map / unordered_map / set
- 学会 智能指针:unique_ptr / shared_ptr / weak_ptr(取代裸指针)
- 理解 RAII 思想(资源获取即初始化)
- 掌握 lambda 表达式(超级常用)
- 熟悉 C++11/14/17/20 常用特性:auto、constexpr、range-for、structured binding、std::optional 等
你现在想深入哪个部分?
比如:
- 更详细的指针 vs 引用 vs 智能指针
- vector / string 常用操作
- 类与对象(构造/析构/拷贝/移动)
- 模板基础
- lambda 表达式
- 内存管理(new/delete vs 智能指针)
告诉我你的目标或想重点了解的部分,我可以继续展开~ 😄