C++ 面试核心知识点总结
本文主要梳理了 C++ 岗位面试中高频涉及的几个领域,包括语法基础、STL 标准库、内存管理、面向对象特性以及常用工具。掌握这些内容,基本能应对大部分 C++ 开发岗位的考核。
一、C++ 语法基础
变量的使用和生命周期
全局变量在整个程序执行期间有效,作用域通常覆盖整个文件;局部变量定义在函数或代码块内,仅在该范围内可见;静态变量则通过 static 关键字声明,具有特定的存储周期。
| 变量类型 | 声明方式 | 初始化建议 | 存储位置 | 作用域 | 生命周期 |
|---|---|---|---|---|---|
| 全局变量 | 函数外部 | 声明时初始化 | 静态存储区 | 整个文件 | 程序运行全程 |
| 局部变量 | 函数/代码块内 | 建议声明时初始化 | 栈区 | 函数内部 | 函数调用期间 |
| 静态全局 | 加 static | 声明或首次使用前 | 静态存储区 | 整个文件 | 程序运行全程 |
| 静态局部 | 加 static | 声明或首次使用前 | 静态存储区 | 函数内部 | 程序运行全程(值持久化) |
命名空间的作用
命名空间主要用于避免命名冲突,将相关函数和类封装在一起,提高代码的可读性和模块化程度。使用时需注意标准命名空间 std 的引用方式,推荐显式使用 std:: 前缀以避免污染全局命名空间。
include "" 和 <> 的区别
#include <文件名> 用于包含标准库头文件,编译器按系统路径搜索;#include "文件名" 用于包含用户自定义头文件,优先在当前目录查找,再按系统路径搜索。
指针与引用的核心概念
指针是存储变量地址的数据类型,通过解引用操作符 * 访问数据,地址运算符 & 获取地址。引用则是变量的别名,定义时必须初始化且不可更改绑定对象,使用时无需解引用符号。
指针数组 vs 数组指针
- 指针数组:数组元素全是指针,如
int *ptrArray[5],常用于管理一组动态对象。 - 数组指针:指向数组的指针,如
int (*arrPtr)[5],常用于处理多维数组或作为函数参数传递整个数组。
指针与引用的区别 引用不能为空,必须初始化且不可重新绑定;指针可以为空,可重新指向不同对象,但需要手动解引用。


