C++ 面试通关:语法基础、内存管理与类设计
这几年带新人面试,发现 C++ 的高频考点很集中——语法细节、内存管理、类机制,再附带一些周边工具。下面把这些点整理出来,方便快速回顾。
语法基础
变量生命周期与存储位置
变量根据作用域和存储期,一般分成全局、局部、静态几类。它们的声明方式、初始化时机和内存位置都不一样,面试时常会问到。
| 变量类型 | 声明方式 | 内存位置 | 作用域 | 生命周期 |
|---|---|---|---|---|
| 全局变量 | 函数外部声明 | 静态存储区 | 整个文件 | 程序运行期间 |
| 局部变量 | 函数或代码块内 | 栈区 | 函数内部 | 函数调用期间 |
| 静态全局 | 加 static 关键字 | 静态存储区 | 整个文件 | 程序运行期间 |
| 静态局部 | 加 static 关键字 | 静态存储区 | 函数内部 | 程序运行期间(值持久化) |
// 全局变量
int globalVar = 10;
void func() {
// 局部变量
int localVar = 20;
// 静态局部变量
static int staticLocal = 30;
}
命名空间
命名空间主要就是为了避免符号冲突。比如标准库的东西都在 std 下面,咱们平时用 std::cout、std::string 都是加前缀。using namespace std; 写起来省事,但会把整个 std 暴露出来,小 demo 无所谓,正经项目还是规规矩矩加前缀好。
include "" 和 <> 的区别
#include <文件名>:用来包含标准库头文件,编译器按标准路径去找。- :用来包含自己写的或者项目内部头文件,优先在当前目录查找,找不到再去标准路径。


