C++ 面试题01
一、C++ 基础(1–10) 1. 指针和引用的区别?各自适用场景? 怎么说: “简单说,指针是个变量,存的是地址,可以为空也可以重新赋值;引用就是个别名,绑定后就不能变了,也不能为空。” 场景: “需要表示‘可能没有对象’或者要切换指向时用指针;函数传参想避免拷贝又保证不为空时,首选引用。” 2. const 修饰变量、指针、成员函数分别表示什么? 变量: 值不能改(...
一、C++ 基础(1–10) 1. 指针和引用的区别?各自适用场景? 怎么说: “简单说,指针是个变量,存的是地址,可以为空也可以重新赋值;引用就是个别名,绑定后就不能变了,也不能为空。” 场景: “需要表示‘可能没有对象’或者要切换指向时用指针;函数传参想避免拷贝又保证不为空时,首选引用。” 2. const 修饰变量、指针、成员函数分别表示什么? 变量: 值不能改(...
在开发一个基于 Reactor 模式的 C++ 网络库时,我遇到了一个经典的内存管理难题:对象无法被析构,导致文件描述符(fd)泄露和内存持续增长。经过一番调试,最终发现罪魁祸首是 std::shared_ptr 的循环引用,而解决方案正是 C++11 引入的另一个智能指针——std::weak_ptr。 今天,我想和大家分享这次踩坑与填坑的完整过程,希望能帮助正在学习或使用 C++ 智能...
unique_ptr 自定义删除器:从入门到精通 在 C++11 引入的智能指针中,std::unique_ptr 因其高效的性能(零开销抽象)和明确的独占所有权语义而备受推崇。默认情况下,unique_ptr 会使用 delete 运算符来释放资源。然而,在实际开发中,我们管理的资源往往不仅仅是堆内存,还可能是文件句柄、网络连接、数据库连接或操作系统特定的句柄。这时,默认的 delete...
在软件工程中,虽然《设计模式》(GoF)一书列出了23种模式,但在实际开发中,最常用、最核心的通常只有7-8种。 掌握这几种模式,能解决80%以上的常见架构问题。本文将介绍一个C++设计模式实战项目,帮助你深入理解这些核心设计模式。 项目链接:design-patterns-cpp 项目简介 这是一个专注于C++设计模式实现的项目,包含了最常用的设计模式的实际代码示例。每个模式都配有...
深入解析 C++11 线程池的实现原理,通过代码实战讲解 std::thread, std::mutex, std::condition_variable 的协同工作机制,以及如何优雅地管理任务队列和线程生命周期。
背景:被校园网“劝退”的 GitHub 之旅 作为一名开发者,长期以来受限于校园网的网络环境,我在访问 GitHub 时常常遇到连接超时、克隆失败等问题。为了规避这些麻烦,我不得不将许多项目托管在 Gitee(码云)上。虽然 Gitee 在国内速度飞快,但失去了 GitHub 庞大的开源生态和国际交流机会,始终是一种遗憾。 最近,我尝试重新将工作流迁移回 GitHub,却在第一步就遭遇了...
导读:从零开始学习 Linux 下的 C++ Socket 网络编程,通过完整的 TCP 客户端与服务器代码示例,掌握网络编程的核心概念与实践技巧。 🎯 前言:为什么学习 Socket 编程 Socket 是网络通信的基石,几乎所有网络应用都建立在 Socket 之上: Web 服务器 → Socket 微信/WhatsApp → Socket 在线游戏 → ...
MySQL插入数据 insert into table_name(col_name, ...) values(value1, value2, ...) 如果插入所有列可以省略列名 insert into table_name values(value1, value2, ...) 插入多行 insert into table_name(col_name, ...) ...
在现代多线程编程中,异步任务处理是提高程序性能的关键。本文将通过几个简单的示例,展示如何使用 C++ 中的 std::promise, std::future, 和 std::async 来实现高效的任务并行化。 一个可拆解的任务 假设我们需要计算从 [1, N) 范围内所有数字的总和。为了演示目的,我们将这个大任务拆分为两个子任务,分别由主线程和工作线程执行。 #include &l...
并发编程是指在多线程或多进程环境下,协调多个执行流对共享资源的访问,以避免数据竞争(data race)和状态不一致。在 C++ 中,我们通常使用互斥锁(std::mutex)来保护临界区,确保同一时刻只有一个线程能访问共享资源。 std::mutex 与 RAII 锁管理 #include <iostream> #include <thread> #incl...