C++11新特性(二) 一、nullptr 在引入 nullptr 之前,C 和 C++ 使用的都是 NULL,但对于它的定义是不同的: 1234567#ifndef NULL#ifdef __cplusplus#define NULL 0#else#define NULL ((void *)0)#endif#endif 根本原因和 C++ 的重载函数有关。C++ 通过搜索匹配参数的机制,试图找到最佳匹配的函数,而如果继 2026-05-11 C++ > 语言特性 > C++11 #C++ #C++11 #语言特性
C++ RAII原理 在 C++ 中,RAII (Resource Acquisition Is Initialization,资源获取即初始化) 是最核心的编程范式之一。它利用 C++ 的对象生命周期管理机制(构造函数与析构函数),实现对资源的自动化管理,从而避免内存泄漏、死锁等问题。 RAII 不是一种特殊的语法,而是 C++ 生命周期机制的一种应用习惯。只要遵循“将资源封装在对象内,并在析构函数中释放资源”这一 2026-05-10 C++ > 内存管理 #C++ #内存管理
C++ type_traits 一、什么是 type_traits type_traits(类型特性) 是一组模板类或函数,用于在编译时期获取或修改类型的信息。例如,你可以定义一个is_same 来检查两个类型是否相同,或者定义一个 remove_const 来去除类型的 const 限定符。 <type_traits> 头文件中包含了一组编译期工具,用于: 查询(Query):检查类型的属性(例如:是整数吗?是指 2026-05-09 C++ > 语言特性 > C++11 #C++
C++右值引用 一、左值、右值 1.1 什么是左值、右值 1int a = 5; 简单来说,左值就是等号左边的值,可以取地址,也就是这里的 a;右值就是等号右边的值,不能够取地址,也就是这里的 5。 a 可以通过 & 取地址,位于等号左边,所以 a 是左值 5 位于等号右边,5 没法通过 & 取地址,所以 5 是个右值 再看一个例子: 123456789struct A { A 2026-05-08 C++ #C++
C++模板参数推导 一、基本概念 模板参数推导(Template Argument Deduction) 是编译器自动分析函数模板调用时的实参类型,从而确定模板参数的过程。 其核心工作就是当调用一个函数模板时,编译器会尝试将**调用时传入的实参类型(A)与模板定义中的参数类型(P)**进行匹配。 123template <typename T>void func(T param);func(10); // 2026-05-06 C++ > 模板 #C++ #模板
C++模板中的typename 一、class 和 typename 如下例所示: 123456// 以下两种写法完全等价template <typename T>void func(T t) {}template <class T>void func(T t) {} 历史原因:class 是 C++98 引入模板时的关键字,typename 是后来加入的。现在更推 2026-04-16 C++ > 模板 #C++ #模板
C++11新特性(一) 一、auto & decltype 1.1 auto auto:让编译器在编译器就推导出变量的类型,可以通过=右边的类型推导出变量的类型。 123456auto a = 10; // 10是int型,可以自动推导出a是intint i = 10;auto b = i; // b是int型auto d = 2.0; // d是double型 auto 推导规则: auto 的使用必须马上初 2026-04-15 C++ > 语言特性 > C++11 #C++ #C++11 #语言特性
C++ 模板 一、引言 C++ 通过函数重载可以实现对不同数据类型完成同一功能,但是这样写重复的代码就显得很臃肿,且代码的复用率较低,每当出现一个 新类型,就需要增加对应的函数。 由此,引入了模板。所谓模板,顾名思义就是一个通用的描述。也就是使用泛型来定义函数,就是编写与类型无关的代码,其中泛型可通过具体的类型来(如 int 或 double)替换。通过将类型作为参数传递给模板,可使编译器生成该类型的的函数。 2026-04-14 C++ > 模板 #C++ #模板
Git本地与Github远程仓库同步 一、同步流程 1、创建远程仓库 如果还没有远程仓库,先在 Github 上创建远程仓库 2、克隆远程仓库 首次使用远程仓库时,使用 git clone 命令将其克隆到本地: HTTPS 方式: 1git clone https://github.com/用户名/仓库名.git SSH 方式(推荐): 1git clone git@github.com:用户名/仓库名.git 如果你有现有的本地项目 2026-02-13 工具 > Git #工具 #Git
Hexo Fluid主题配置 Latex 数学公式渲染 一、问题 Hexo 默认使用 hexo-renderer-marked 作为 Markdown 渲染器,但它存在以下问题: 不支持 $ 语法:会将 $ 当作普通字符处理 符号冲突:_(下划线)会被解析为斜体,破坏公式结构 转义问题:\ 等 LaTeX 转义符可能被错误处理 二、解决 Fluid 主题内置了 MathJax 和 KaTeX 的支持,但: 默认是关闭状态(math.enable: 2025-09-17 工具 > Markdown #工具 #Markdown