C++_ 模板学习一
函数模板与实例化 模板是什么 普通函数只能处理声明好的类型 如果还要处理 double、std::string,不使用模板就需要重复编写 模板的作用是 描述一组具有相同结构、但类型不同的函数 这段代码本身不是一个普通函数,而是一个函数模板,也可以理解为编译器生成函数的“配方” 模...
函数模板与实例化 模板是什么 普通函数只能处理声明好的类型 如果还要处理 double、std::string,不使用模板就需要重复编写 模板的作用是 描述一组具有相同结构、但类型不同的函数 这段代码本身不是一个普通函数,而是一个函数模板,也可以理解为编译器生成函数的“配方” 模...
概述 decltype 从 C++11 引入,用来在编译期获取一个实体或表达式的类型 它与 auto 最大的区别是: auto 通常会进行类型退化,而 decltype 会精确保留 const、引用、数组以及表达式的值类别 规则一:未加括号的名字或成员访问 如果操作数是: 未加括...
模板 概述 C++模板是一个强大的编程工具,使得可以编写通用的、类型安全的代码 模板主要用于函数和类的泛型编程,允许你定义通用算法和数据结构,然后在需要时使用具体类型进行实例化 使用场景 通用算法: 模板允许你编写通用算法,如排序、搜索等,而无需针对每种类型重复实现 容器类: 标...
理解 protobuf允许不同编程语言的程序员 以自己熟悉的方式在.proto文件里定义消息结构 然后protobuf的引擎把这个.proto文件里描述的消息结构进行解析,最后生成对应语言的代码,这些代码里描述了之前定义的消息结构 然后在项目中,需要用到这些消息结构的模块,只需引...
std::memory_order_relaxed 总结1 线程 A 使用 memory_order_relaxed 写入 x,不会与线程 B 对 x 的读取建立 happens-before 关系,因此无法保证线程 B 的读取一定能看到 A 写入的新值 本质 多核 CPU 并不...
进程地址空间 概述 示例代码 图示 内核空间 内核空间是什么 内核空间是进程虚拟地址空间的高地址部分,在 64 位 Linux 上位于 0xFFFF800000000000 以上,占 128TB 它和用户空间的根本区别不是"地址高低",而是页表属性: 内核空间...
进程地址空间 概述 Windows 进程地址空间和 Linux 一样采用虚拟地址空间,每个进程有独立的虚拟地址空间,由 Windows 内核和硬件 MMU 联合管理 核心区别在于: Windows 使用 PE(Portable Executable)格式代替 ELF 使用 Hea...
procdump 概述 Sysinternals 里面的一个命令行抓 dump 工具,核心定位是按条件触发的转储工具 它可以在崩溃、CPU 飙高、内存超标、卡死等各种条件下自动抓 dump,不用盯着手动抓 三种基本工作模式 Attach 到已运行的进程 直接给进程名或 PID 等...
静态类型 概述 静态类型是一个表达式在编译期就确定的类型,它由声明决定,永远不会改变 示例 无论运行时 p 实际指向什么,p 的静态类型始终是 Animal*,这是编译器在词法分析阶段就锁死的 什么时候确定 编译期,词法/语义分析阶段 编译器看到变量声明时,立刻将类型信息记入符号...
概述 ATL ATL 本来是为了写 COM 组件(ActiveX、OLE)而生的,顺带提供了最基础的窗口能力 WTL WTL 是微软的一个团队后来单独发布的头文件库,专门填充 ATL 在 UI 方向的空白 关系 wtl是工具箱,不是框架 ATL 概述 下面这些文件,WTL 依赖这...
搜索当前标签