C++考试语法知识

一、基础必考:变量、类型与运算符

  1. 数据类型与转换

    • constvs constexprconst是运行时/编译时常量;constexpr必须是编译时常量(C++11)。

    • autodecltypeauto推导变量类型;decltype推导表达式类型(不计算表达式)。

    • 强制类型转换 :重点区分 static_cast(编译期安全转换)、dynamic_cast(运行时多态转换,含安全检查)、const_cast(移除 const)和 reinterpret_cast(危险的低级重解释)。

  2. 引用与指针(高频陷阱)

    • 引用 (&):别名,必须初始化,不能为空,不能更换目标。

    • 指针 (*) :存储地址的变量,可以为 nullptr

    • 常引用 (const T&):万能参数,可接受临时对象(右值)。

  3. 作用域与生命周期

    • static:静态局部变量(只初始化一次,生命周期贯穿程序)。

    • extern:声明外部文件定义的全局变量。


二、核心语法:函数与面向对象

  1. 函数重载与默认参数

    • 重载规则 :函数名相同,参数类型或个数不同(返回值不同不算重载)。

    • 默认参数 :必须从右向左连续设置。

  2. 类与对象(OOP 核心)

    • 三大特性 :封装(private/public)、继承(public/protected/private继承)、多态(虚函数)。

    • 构造函数/析构函数:构造函数可重载;析构函数必须虚(如果基类有虚函数)。

    • 初始化列表 :必须用于初始化 const成员、引用成员、无默认构造的类成员。

    • explicit :禁止隐式单参数构造函数转换(如 MyClass obj = 10;会被禁止)。

  3. 动态内存管理(常考改错题)

    • new/ delete:成对使用。

    • new[]/ delete[]:数组版本必须配对,否则内存泄漏或未定义行为。


三、进阶难点:模板与标准库

  1. 模板基础

    • 函数模板template <typename T> T max(T a, T b)

    • 类模板template <class T> class Stack {}

    • 特化:针对特定类型提供特殊实现。

  2. STL 容器与迭代器

    • 顺序容器vector(动态数组)、list(链表)、deque(双端队列)。

    • 关联容器map(红黑树,键值对)、set(集合)。

    • 迭代器失效vector插入/删除元素可能导致迭代器失效(必考坑点)。

  3. 智能指针(C++11 重点)

    • unique_ptr:独占所有权,不能拷贝,只能移动。

    • shared_ptr:共享所有权,引用计数。

    • weak_ptr :解决 shared_ptr循环引用问题。


四、易错题与避坑指南

  1. 浅拷贝 vs 深拷贝

    • 默认拷贝构造函数是浅拷贝 (直接复制指针)。如果类内有动态内存,必须手动实现深拷贝(复制指针指向的内容)。
  2. 虚函数表(vtable)

    • 只有虚函数会进入虚函数表。纯虚函数(=0)使类成为抽象类,不能实例化。
  3. const成员函数

    • 声明为 const的成员函数,不能修改类的非 mutable成员变量。

五、考前速查表(必背)

语法点 核心规则/易错点
引用 必须初始化,是别名
**const**​ const*左边指内容不可变,在右边指指针不可变
虚函数 基类析构函数必须为虚函数
vector迭代器失效 push_back可能导致迭代器失效
**new/delete**​ 必须配对,数组用 new[]/delete[]
**static**​ 静态成员变量需在类外单独定义
相关推荐
我不是疯子是傻子10 分钟前
串口通信数据帧粘包拆包再进化:基于 Qt 的滑动窗口与 CRC 校验实战
开发语言·qt
程序员老陆19 分钟前
Qt中实现窗口真全屏(覆盖Windows任务栏)
开发语言·windows·qt
旖旎夜光25 分钟前
LeetCode 904:水果成篮(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
霸道流氓气质44 分钟前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
路溪非溪1 小时前
Python语言的执行流程总结
开发语言·python
民乐团扒谱机1 小时前
【超详解】量子克拉美罗下界QCRB:时延估计精度极限推导+MATLAB多场景绘图实战
开发语言·机器学习·matlab·量子力学·qcrb
乐观勇敢坚强的老彭2 小时前
C++ 竞赛常用算法模板速查表
开发语言·c++·算法
离陌在学C#2 小时前
C# 泛型:从基础到高级应用
开发语言·c#
ly76892 小时前
Java 设计模式详解:从原则到 23 种经典模式
java·开发语言·设计模式
SomeB1oody2 小时前
【RustyML入门】2.13. 孤立森林
开发语言·后端·机器学习·rust·教程