当前位置: 首页 > article >正文

极限复习c++

一、核心语法必背

1. 指针 vs 引用(简答题高频)
区别指针引用
定义存储地址的变量,可改指向变量的别名,绑定后不可改
初始化可空(nullptr)、延迟初始化必须初始化,不能引用空值
访问需解引用(*p/->直接用变量名,语法同原变量
空值允许nullptr无空引用,绑定后必有效
自增 / 减支持(移动地址)不支持(别名不变)

代码示例

cpp

运行

int a = 10;
int* p = &a;  // 指针存地址
int& ref = a; // 引用是别名 p = nullptr;  // 指针可改指向
// ref = nullptr;  // 错误!引用不能改绑定
2. 类与对象(必写代码)

封装 + 构造 / 析构 + 拷贝控制(考频最高):

cpp

运行

class Student {
private:string name;int age;
public:// 构造函数(重载 + 初始化列表)Student(string n = "无名", int a = 0) : name(n), age(a) {}  // 拷贝构造(深拷贝场景需手动写,如含指针成员)Student(const Student& other) : name(other.name), age(other.age) {}  // 析构函数(含动态内存时必写,如指针)~Student() { /* 释放资源 */ }  // 成员函数void print() const { cout << "姓名:" << name << ",年龄:" << age << endl; }
};// 调用示例
Student zs("张三", 18);
zs.print(); 
Student ls = zs; // 调用拷贝构造
3. 继承与多态(必写代码)

虚函数 + 纯虚函数 + 多态调用(核心考点):

cpp

运行

class Animal {
public:// 纯虚函数(抽象类,强制派生类实现)virtual void speak() = 0;  // 虚析构(避免派生类对象析构不完整)virtual ~Animal() {}  
};class Dog : public Animal {
public:void speak() override { // override 显式重写cout << "汪汪!" << endl; }
};// 多态调用(基类指针/引用指向派生类对象)
Animal* animal = new Dog();
animal->speak(); // 输出“汪汪!”(运行时绑定)
delete animal;
4. 模板(必写代码)

函数模板 + 类模板(语法题高频):

cpp

运行

// 函数模板(泛型交换)
template <typename T>
void swap(T& a, T& b) {T temp = a;a = b;b = temp;
}// 类模板(简单栈)
template <typename T>
class Stack {
private:vector<T> data;
public:void push(const T& val) { data.push_back(val); }T pop() { T top = data.back();data.pop_back();return top; }
};// 调用示例
Stack<int> s;
s.push(10);
int x = s.pop();
5. 智能指针(必背区别)
类型特点场景
unique_ptr独占所有权,不可拷贝简单对象管理,避免资源泄漏
shared_ptr共享所有权(引用计数)多对象共享资源,需注意循环引用
weak_ptr弱引用(不影响计数)解决shared_ptr循环引用

代码示例

cpp

运行

// unique_ptr(独占)
unique_ptr<Student> p1 = make_unique<Student>("李四", 20);// shared_ptr(共享)
shared_ptr<Student> p2 = make_shared<Student>("王五", 22);
shared_ptr<Student> p3 = p2; // 引用计数+1// weak_ptr(弱引用)
weak_ptr<Student> p4 = p2; // 不影响计数
6. 异常处理(必写结构)

cpp

运行

try {// 可能抛异常的代码if (error) throw runtime_error("出错了!"); 
} catch (const runtime_error& e) {// 捕获特定异常cout << "错误:" << e.what() << endl; 
} catch (...) {// 兜底捕获cout << "未知异常" << endl; 
}

二、简答题速记(直接背答案)

1. 指针和引用的区别(必考题)
  • 定义:指针存地址,可改指向;引用是别名,绑定后不可改。
  • 初始化:指针可空、延迟初始化;引用必须初始化,不能引用空值。
  • 访问:指针需解引用(*p);引用直接用变量名。
  • 空值:指针允许nullptr;引用无空引用。
2. 虚函数的实现原理(必考题)
  • 虚函数表(vtable):每个含虚函数的类编译时生成虚表,存储虚函数地址。
  • 虚表指针(vptr):对象构造时,vptr 指向类的虚表。
  • 调用机制:通过 vptr 查表,运行时动态绑定函数(多态的核心)。
3. 拷贝构造函数的调用场景(必考题)
  • 用对象初始化新对象Student s2 = s1; 或 Student s2(s1);
  • 函数按值传递对象void func(Student obj),调用时拷贝实参。
  • 函数返回对象(值返回)Student func() { Student s; return s; },返回时拷贝临时对象。
4. 内存泄漏及解决方法(必考题)
  • 内存泄漏:动态分配的内存(new/malloc)未释放,长期占用内存。
  • 解决方法
    • 用智能指针(unique_ptr/shared_ptr)自动管理。
    • 严格配对 new/deletemalloc/free
    • 工具检测(如 Valgrind、AddressSanitizer)。
5. 重载(overload)、覆盖(override)、重写(overwrite)区别(选考)
  • 重载(overload):同一作用域,函数名相同,参数(类型 / 个数 / 顺序)不同,编译期决议。
  • 覆盖(override):派生类重写基类虚函数,函数签名(名、参数、返回)完全一致,运行期多态。
  • 重写(overwrite):非标准说法,常指覆盖(override)或隐藏基类函数(如派生类定义同名非虚函数)。

三、考试应急策略

  1. 代码题:优先写框架(类定义、函数模板结构),再补细节(构造函数、虚函数、智能指针)。
  2. 简答题:抓关键词(如 “虚函数表”“引用计数”“拷贝场景”),按点作答。
  3. 易错点
    • 多态必须用虚函数 + 基类指针 / 引用
    • 智能指针注意 unique_ptr 不可拷贝,shared_ptr 需避免循环引用。
    • 模板代码记得写 template <typename T>

最后 1 小时:快速过一遍必背代码(类、多态、模板)和简答题答案,强化肌肉记忆!

祝考试顺利,代码全 AC !

相关文章:

极限复习c++

一、核心语法必背 1. 指针 vs 引用&#xff08;简答题高频&#xff09; 区别指针引用定义存储地址的变量&#xff0c;可改指向变量的别名&#xff0c;绑定后不可改初始化可空&#xff08;nullptr&#xff09;、延迟初始化必须初始化&#xff0c;不能引用空值访问需解引用&…...

32单片机——窗口看门狗

1、WWDG的简介 WWDG&#xff1a;Window watchdog&#xff0c;即窗口看门狗 窗口看门狗本质上是能产生系统复位信号和提前唤醒中断的递减计数器 WWDG产生复位信号的条件&#xff1a; &#xff08;1&#xff09;当递减计数器值从0x40减到0x3F时复位&#xff08;即T6位跳变到0&a…...

javascript中Cookie、BOM、DOM的使用

Cookie 在客户端存储小型文本数据&#xff08;通常 ≤ 4KB&#xff09;&#xff0c;常用于会话管理、个性化设置等场景。 名称描述作用生命周期存储位置安全性会话 Cookie临时存储&#xff0c;浏览器关闭后自动删除会话管理、个性化设置浏览器关闭内存高持久 Cookie设置过期时…...

IDEA 中 Undo Commit,Revert Commit,Drop Commit区别

一、Undo Commit 适用情况&#xff1a;代码修改完了&#xff0c;已经Commit了&#xff0c;但是还未push&#xff0c;然后发现还有地方需要修改&#xff0c;但是又不想增加一个新的Commit记录。这时可以进行Undo Commit&#xff0c;修改后再重新Commit。如果已经进行了Push&…...

DAY43打卡

浙大疏锦行 kaggle找到一个图像数据集&#xff0c;用cnn网络进行训练并且用grad-cam做可视化 进阶&#xff1a;并拆分成多个文件 fruit_cnn_project/ ├─ data/ # 存放数据集&#xff08;需手动创建&#xff0c;后续放入图片&#xff09; │ ├─ train/ …...

Leetcode 1892. 页面推荐Ⅱ

1.题目基本信息 1.1.题目描述 表&#xff1a; Friendship ---------------------- | Column Name | Type | ---------------------- | user1_id | int | | user2_id | int | ---------------------- (user1_id,user2_id) 是 Friendship 表的主键(具有唯一值的列的组合…...

进程——环境变量及程序地址空间

目录 环境变量 概念 补充&#xff1a;命令行参数 引入 其它环境变量 理解 程序地址空间 引入 理解 虚拟地址存在意义 环境变量 概念 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。打个比方&#xff0c;就像你布置房间&#xff0c;这些参数就类…...

(4-point Likert scale)4 点李克特量表是什么

文章目录 4-point Likert scale 定义4-point Likert scale 的构成4-point Likert scale 的特点4-point Likert scale 的应用场景 4-point Likert scale 定义 4-point Likert scale&#xff08;4 点李克特量表&#xff09;是一种常用的心理测量量表&#xff0c;由美国社会心理学…...

亚矩阵云手机实测体验:稳定流畅背后的技术逻辑​

最近在测试一款云手机服务时&#xff0c;发现亚矩阵的表现出乎意料地稳定。作为一个经常需要多设备协作的开发者&#xff0c;我对云手机的性能、延迟和稳定性要求比较高。经过一段时间的体验&#xff0c;分享一下真实感受&#xff0c;避免大家踩坑。 ​​1. 云手机能解决什么问…...

VR视频制作有哪些流程?

VR视频制作流程知识 VR视频制作&#xff0c;作为融合了创意与技术的复杂制作过程&#xff0c;涵盖从初步策划到最终呈现的多个环节。在这个过程中&#xff0c;我们可以结合众趣科技的产品&#xff0c;解析每一环节的实现与优化&#xff0c;揭示背后的奥秘。 VR视频制作有哪些…...

NodeJS全栈WEB3面试题——P2智能合约与 Solidity

2.1 简述 Solidity 的数据类型、作用域、函数修饰符。 数据类型&#xff1a; 值类型&#xff08;Value Types&#xff09;&#xff1a;uint, int, bool, address, bytes1 到 bytes32, enum 引用类型&#xff08;Reference Types&#xff09;&#xff1a;array, struct, mappin…...

某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量

要计算每日电量&#xff0c;需处理电表清零的情况。以下是针对不同数据库的解决方案&#xff1a; 方法思路 识别清零点&#xff1a;通过比较当前值与前一个值&#xff0c;若当前值明显变小&#xff08;如小于前值的10%&#xff09;&#xff0c;则视为清零。分段累计&#xff…...

Ubuntu 系统部署 MySQL 入门篇

一、安装 MySQL 1.1 更新软件包 在终端中执行以下命令&#xff0c;更新系统软件包列表&#xff0c;确保安装的是最新版本的软件&#xff1a; sudo apt update 1.2 安装 MySQL 执行以下命令安装 MySQL 服务端&#xff1a; sudo apt install mysql-server 在安装过程中&…...

【MATLAB代码】制导——平行接近法,三维,目标是运动的,订阅专栏后可直接查看MATLAB源代码

文章目录 运行结果简介代码功能概述运行结果核心模块解析代码特性与优势MATLAB例程代码调整说明相关公式视线角速率约束相对运动学方程导引律加速度指令运动学更新方程拦截条件判定运行结果 运行演示视频: 三维平行接近法导引运行演示 简介 代码功能概述 本代码实现了三维空…...

大模型安全测试报告:千问、GPT 全系列、豆包、Claude 表现优异,DeepSeek、Grok-3 与 Kimi 存在安全隐患

大模型安全测试报告&#xff1a;千问、GPT 全系列、豆包、Claude 表现优异&#xff0c;DeepSeek、Grok-3 与 Kimi 存在安全隐患 引言 随着生成式人工智能技术的快速演进&#xff0c;大语言模型&#xff08;LLM&#xff09;正在广泛应用于企业服务、政务系统、教育平台、金融风…...

vue3 按钮级别权限控制

在Vue 3中实现按钮级别的权限控制&#xff0c;可以通过多种方式实现。这里我将介绍几种常见的方法&#xff1a; 方法1&#xff1a;使用Vue 3的Composition API 在Vue 3中&#xff0c;你可以使用Composition API来创建一个可复用的逻辑来处理权限控制。 创建权限控制逻辑 首…...

vue3子组件获取并修改父组件的值

在子组件中&#xff0c;父组件传递来的 prop 是只读的&#xff0c;但是确实有修改的需求&#xff0c;故此做个小小研究 // 父组件使用模版&#xff1a;update:xxx"dialogVisible $event" // 子组件使用模版 // const emits defineEmits([update:xxx]); // emits(u…...

【Redis】Cluster集群

目录 1、背景2、核心特性【1】数据分片【2】高可用【3】去中心化【4】客户端重定向 3、集群架构【1】最小规模【2】节点角色【3】通信协议 4、数据分片与路由【1】哈希槽分配【2】客户端路由逻辑 5、故障恢复6、适用场景 1、背景 Redis Cluster是Redis官方提供的分布式解决方案…...

黑马Java面试笔记之 微服务篇(SpringCloud)

一. SpringCloud 5大组件 SpringCloud 5大组件有哪些&#xff1f; 总结 五大件分别有&#xff1a; Eureka&#xff1a;注册中心Ribbon&#xff1a;负载均衡Feign&#xff1a;远程调用Hystrix&#xff1a;服务熔断Zuul/Gateway&#xff1a;网关 如果项目用到了阿里巴巴&#xff…...

CLIP多模态大模型的优势及其在边缘计算中的应用

CLIP多模态大模型的优势及其在边缘计算中的应用 CLIP&#xff08;Contrastive Language-Image Pre-training&#xff09;模型&#xff0c;是OpenAI开发的一种多模态大模型。该模型通过对比学习的方式&#xff0c;在大规模图像-文本对上进行预训练&#xff0c;成功实现了图像和文…...

基于STM32语音识别柔光台灯

基于STM32语音识别柔光台灯 &#xff08;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 基于语音识别的智能LED柔光台灯设计&#xff0c;主要包括语音识别模块应用&#xff0c;PWM波控制LED柔光灯的亮度&#xff0c…...

基于PSO粒子群优化的VMD-GRU时间序列预测算法matlab仿真

目录 1.前言 2.算法运行效果图预览 3.算法运行软件版本 4.部分核心程序 5.算法仿真参数 6.算法理论概述 6.1变分模态分解&#xff08;VMD&#xff09; 6.2 门控循环单元&#xff08;GRU&#xff09; 6.3 粒子群优化&#xff08;PSO&#xff09; 7.参考文献 8.算法完…...

探索未知惊喜,盲盒抽卡机小程序系统开发新启航

在消费市场不断追求新鲜感与惊喜体验的当下&#xff0c;盲盒抽卡机以其独特的魅力&#xff0c;迅速成为众多消费者热衷的娱乐与消费方式。我们紧跟这一潮流趋势&#xff0c;专注于盲盒抽卡机小程序系统的开发&#xff0c;致力于为商家和用户打造一个充满趣味与惊喜的数字化平台…...

基于开源AI大模型与AI智能名片的S2B2C商城小程序源码优化:企业成本管理与获客留存的新范式

摘要&#xff1a;本文以企业成本管理的两大核心——外部成本与内部成本为切入点&#xff0c;结合开源AI大模型、AI智能名片及S2B2C商城小程序源码技术&#xff0c;构建了企业数字化转型的“技术-成本-运营”三维模型。研究结果表明&#xff0c;通过AI智能名片实现获客留存效率提…...

Python----目标检测(YOLO简介)

一、 YOLO简介 [YOLO](You Only Look Once&#xff09;是一种流行的物体检测和图像分割模型&#xff0c; 由华盛顿大学的约瑟夫-雷德蒙&#xff08;Joseph Redmon&#xff09;和阿里-法哈迪&#xff08;Ali Farhadi&#xff09;开发&#xff0c;YOLO 于 2015 年推出&#xff0c…...

mysql+keepalived

文章目录 一、master1创建目录写入配置文件启动master1创建 `slave` 用户并授权获取主节点当前 `binary log` 文件名和位置position二、master2创建目录写入配置文件启动master2创建 `slave` 用户并授权获取主节点当前 `binary log` 文件名和位置position三、配置主主复制Maste…...

Profinet 协议 IO-Link 主站网关(三格电子)

一、产品概述 1.1 产品用途 SG-PN-IOL-8A-001 网关是 Profinet 从转 IO-Link 主的网关设备 &#xff0c;可以将 IO-Link 从站设备接入 Profinet 系统&#xff0c;通过该网关可实现传感器及驱动器与控制 器之间的信息交互。网关有两个百兆网口和 8 个 IO-Link 端口&#xff0c;两…...

Ubuntu22.04 安装 Miniconda3

Conda 是一个开源的包管理系统和环境管理系统&#xff0c;可用于 Python 环境管理。 Miniconda 是一个轻量级的 Conda 发行版。Miniconda 包含了 Conda、Python和一些基本包&#xff0c;是 Anaconda 的精简版本。 1.下载安装脚本 在 conda官网 找到需要的安装版本&#xff0…...

Hubstudio浏览器如何使用Loongproxy?

1. 使用软件 1.1 Loongproxy 1. 顶级ISP资源&#xff1a;Loongproxy是神龙云旗下品牌&#xff0c;依托与全球领先ISP运营商的深度合作&#xff0c;Loongproxy 精选全球优质静态住宅IP资源。 2. IP池庞大&#xff1a;覆盖 100 国家/地区&#xff0c;构建庞大的 70 万 静态IP池…...

硬件工程师笔记——555定时器应用Multisim电路仿真实验汇总

目录 一 555定时器基础知识 二、引脚功能 三、工作模式 1. 单稳态模式: 2. 双稳态模式(需要外部电路辅助): 3. 无稳态模式(多谐振荡器): 4. 可控脉冲宽度调制(PWM)模式: 四、典型应用 五、优点 二 555无稳态触发器 三 555单稳态触发器 四 555双稳态触发器…...