C++ 面试常见知识点整理
面试里,C++ 基础往往不是'会不会写代码'这么简单,更多是在看你对对象生命周期、内存模型和类机制的理解是否扎实。下面把常被问到的点按主题梳理一遍,重点放在容易混、也最容易在追问时露怯的地方。
一、C++ 语法基础
变量的使用和生命周期
全局变量能在程序任意位置访问,生命周期通常贯穿整个程序。局部变量只在函数或代码块内有效,出了作用域就失效。static 声明的变量比较特别,它保留了静态存储期,但作用域不一定大。
| 变量类型 | 声明方式 | 初始化建议 | 内存存储位置 | 作用域 | 生命周期 |
|---|---|---|---|---|---|
| 全局变量 | 函数外部声明 | 声明时初始化 | 常量区(静态存储区) | 整个文件 | 程序结束 |
| 局部变量 | 函数或代码块内 | 声明时初始化 | 栈区 | 函数内部 | 函数调用期间 |
| 静态全局 | 加 static 关键字 | 声明或首次使用前 | 常量区(静态存储区) | 整个文件 | 程序结束 |
| 静态局部 | 加 static 关键字 | 声明或首次使用前 | 常量区(静态存储区) | 函数内部 | 函数调用间持久化 |
// 全局变量声明并初始化
int globalVar = 10;
void func() {
// 局部变量声明并初始化
int localVar = 20;
// 静态局部变量声明并初始化
static int staticLocalVar = 30;
}
命名空间的作用
命名空间最直接的价值就是避开重名冲突。项目一大,函数名、类名撞车很常见,把相关内容收进同一个命名空间里,代码也更好组织。
MyNamespace {
x;
;
}
std::cout << << std::endl;
std;
cout << << endl;

