好的!下面给你整理一份C++ 基础知识的清晰概览,适合初学者快速建立知识框架,也方便后期查漏补缺。
我会从最基础的部分开始,逐步介绍 C++ 相比 C 语言增加的重要特性,以及现代 C++(C++11/14/17/20)常用基础内容。
1. C++ 是什么?(一句话总结)
C++ 是C 的超集+面向对象+泛型编程+高性能的多范式编程语言。
2. 第一个程序(Hello World)
#include<iostream>// 标准输入输出头文件intmain()// 程序入口函数{std::cout<<"Hello, World!"<<std::endl;// 输出 + 换行// 或使用 using namespace std; 后可写成 cout << "Hello, World!" << endl;return0;// 返回 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. 变量初始化方式(强烈推荐现代写法)
inta=10;// C 风格intb(10);// 构造函数风格intc{10};// 统一初始化(C++11 起,最推荐)intd{};// 零初始化autoe=3.14;// 类型自动推导6. 指针 vs 引用(非常重要!)
inta=10;// 指针int*p=&a;// 可改指向,可为空*p=20;// 修改 ap=nullptr;// 可以指向空// 引用(必须初始化,不能改指向)int&r=a;// r 是 a 的别名r=30;// 修改 a// int& r2; // 错误!引用必须初始化7. const 与 constexpr(现代 C++ 很常用)
constinta=10;// 常量,不可改constexprintsquare(intx){returnx*x;}// 编译期计算constexprintb=square(5);// 编译期得到 258. 控制流(基本一致,但更推荐现代写法)
// 范围 for 循环(C++11,非常常用)intarr[]={1,2,3,4};for(intx:arr){std::cout<<x<<" ";}// auto + 范围 forfor(autox:arr){...}// 传统 for 也可以写成更现代的样子for(size_t i=0;autox:arr){...}// C++20 if init9. 函数相关(C++11/14/17/20 增强很多)
// 默认参数voidprint(intx=0,inty=0);// 函数重载voidprint(int);voidprint(double);voidprint(constchar*);// 引用传参(推荐)voidswap(int&a,int&b);// inline + constexpr 函数inlineconstexprintmax(inta,intb){returna>b?a:b;}10. 面向对象三大特性快速记忆
- 封装:把数据和操作数据的方法放到类里(private + public)
- 继承:代码复用(public / protected / private 继承)
- 多态:同一接口,不同实现(虚函数 + 虚析构函数)
简单例子:
classAnimal{public:virtualvoidspeak()const=0;// 纯虚函数 → 抽象类virtual~Animal()=default;// 虚析构函数(非常重要!)};classDog:publicAnimal{public:voidspeak()constoverride{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 智能指针)
告诉我你的目标或想重点了解的部分,我可以继续展开~ 😄