logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++ 模板全解:从特化语法到分离编译的底层逻辑

搞懂了模板的表层语法,我们就进入了 C++ 模板最核心的底层问题:为什么普通函数可以把声明放在.h 头文件、定义放在.cpp 源文件,而模板这么写就会报链接错误?链接的本质,就是找地址。我们先看所有 C++ 开发者都熟悉的普通函数分离写法,对应编译四阶段,看它为什么能完美运行,这是我们对比模板的基准。首先是代码结构:cpp运行// func.h:头文件,仅存放函数声明// func.cpp:源文件

#java#开发语言
C++ 继承与多态 一站式复习指南:从核心原理到面试考点全覆盖

虚表(vtable):编译器为含virtual虚函数的类,自动生成的一张存储虚函数地址的数组。一个类全局只有一张虚表,存放在程序的只读数据段 / 全局静态区,所有该类的对象共享这张表。虚表里按顺序,存储该类所有虚函数的入口地址。虚表指针(vptr):每个含虚函数的对象,内存最开头会隐藏一个指针,指向该类的虚表。32 位系统占 4 字节,64 位系统占 8 字节,是对象内存的第一个成员。纯虚函数:格

#c++#面试#开发语言
C++ 多态与二叉搜索树 BST 完整复习笔记(含代码踩坑修正)

本文是 C++ 面向对象核心(多态、虚函数、绑定机制)与数据结构二叉搜索树(BST)的全程学习复习笔记,完整覆盖核心原理、代码实现、实操踩坑与 bug 修正,所有内容均来自学习过程中的真实疑问与易错点,适合期末复习、面试复盘使用,重点攻克动态绑定底层逻辑、BST 删除操作的核心难点。多态是面向对象三大特性(封装、继承、多态)的核心,本质是同一接口,不同实现:用基类的统一接口,调用不同子类的差异化实

#java#jvm#开发语言
C++ STL map/set 从入门到上手,一篇搞定(附完整可运行示例)

我们之前聊过二叉搜索树(BST)和平衡二叉搜索树,而 C++ STL 里的map 和 set,底层就是封装好的红黑树(一种高效的平衡二叉搜索树)。它们天生自带有序性,插入、删除、查询的时间复杂度稳定在O(logn),是 C++ 开发和考试里最高频的容器之二,今天我们就把它俩讲透,全是可直接跑的示例。cpp运行// 1. 基础定义:默认升序排列的int型set// 2. 自定义排序:降序排列// 3

#c++
C++ STL map/set 从入门到精通:核心迭代器与 pair 用法全解析

在 C++ 开发中,STL 容器是绕不开的核心技能,而map和set作为关联式容器的代表,凭借红黑树底层实现的 O (logn) 级增删查效率、自动有序性、key 唯一性,成为了面试高频考点、业务开发高频使用的工具。很多初学者对mapset的用法只停留在简单的插入、删除,却始终没搞懂最核心的迭代器和pair—— 而这两个知识点,恰恰是理解和用好这两个容器的关键。本文将从基础定义到实战用法,带大家彻

#java#开发语言
C++ 左右值引用 完全详解(从入门到精通)

很多人学不好引用,根源是没真正分清左右值。不要用 “赋值号左右” 来判断,这是最常见的错误。左值(lvalue)有身份(identity)、不能被移动的表达式。有身份:能取地址、有名字、生命周期超过当前表达式。不能被移动:编译器默认不会把它的资源 “偷” 走。右值(rvalue)没有身份、可以被移动的表达式。没有身份:临时对象、字面量,生命周期只在当前表达式。可以被移动:编译器可以安全地转移它的资

#java#开发语言
从可变参数到 emplace:现代 C++ 性能优化的核心组合

C++11 可变参数模板和 emplace 接口,是现代 C++ 最成功的特性组合之一。它们完美体现了 C++"零开销抽象可变参数模板提供了强大的参数转发能力,编译期展开,运行时零开销emplace 接口利用这种能力,彻底消除了容器插入操作的临时对象开销在日常开发中,养成优先使用 emplace 的习惯,可以在不改变代码逻辑的情况下,获得显著的性能提升。这也是区分现代 C++ 程序员和传统 C++

#java#开发语言
C++ 异常处理:从面试考点到企业级实战(一篇搞定所有坑)

在大型项目中,我们通常会自定义异常类来区分不同类型的错误。继承自标准异常类(通常是实现what()虚函数提供接受错误信息的构造函数支持嵌套异常(C++11 后)企业级自定义异常示例cpp运行public:private:// 业务异常public:// 数据库异常public:// 网络异常public:优先使用异常处理错误,而不是错误码永远使用 RAII 管理资源,这是解决异常安全问题的根本捕获

#java#开发语言
C++ IO 流 底层原理与常用函数全解(面试硬核版)

C++ IO 流的本质是 **"字节序列的抽象"**,它将不同的输入输出设备(文件、控制台、网络、内存)统一抽象成 "流" 对象。无论底层设备是什么,上层都使用相同的接口进行读写。C++ IO 流允许你自定义streambuf对象,实现自己的缓冲区逻辑。这是 IO 流最强大的特性之一。C++ IO 流的底层核心是缓冲区机制和面向对象抽象。理解了三层缓冲区架构,你就能解释所有 IO 流的奇怪行为。掌

#cocoa#macos#objective-c
深入理解 C++ auto:从推导规则到最佳实践

auto不是 “偷懒工具”,而是现代 C++ 提升开发效率、降低维护成本的重要特性。它的规则并不复杂,核心就是一套推导逻辑 + 几个修饰符组合。

#c++#开发语言
    共 13 条
  • 1
  • 2
  • 请选择