- 博客(6)
- 收藏
- 关注
原创 如何优雅的重写operator
这段代码定义了一套比较运算符的宏模板,用于简化C++类中比较操作符的实现。通过__DECL_EQUALS和__DECL_COMP宏声明相等和比较运算符,__DEF_EQUALS和__DEF_COMP宏提供默认实现。示例中Node类使用这些宏,基于id_成员变量自动生成==、!=、<、>、<=、>=等运算符,只需实现==和<即可自动推导其他操作符。这种模板化方法减少了重复代码,提高了开发效率。
2025-08-26 15:43:31
462
原创 C++ 宏书写技巧 (一)
这篇技术文章解释了C/C++宏编程中do{...}while(false)的巧妙用法。当宏需要包含多条语句时,直接定义会导致宏展开后破坏if/else等控制结构,因为宏只是简单的文本替换。通过使用do{...}while(false)包裹,可以让宏在语法上表现为一条独立语句,避免编译错误。这种写法能确保宏安全地使用return/break等控制语句,保持代码结构完整,同时只执行一次且便于调试。这是C/C++项目中广泛采用的最佳实践,特别适用于错误检查和资源管理等场景。
2025-08-23 14:32:36
317
原创 C++ 引用的神奇之处
在C++代码中,Vptr* p = nullptr; 定义了一个空指针 p,随后调用 funciton(p->a, p)。尽管 p 是空指针,访问 p->a 并不会立即导致程序崩溃。这是因为编译器在编译时将 a 绑定到 p->a 的地址,但并未实际解引用该地址。在 funciton 函数内部,由于 p 被检测为空指针,函数提前返回,未使用 a,因此避免了空指针解引用错误。如果直接使用 a 而不进行空指针检查,程序将崩溃。这一现象展示了编译器在处理空指针时的优化机制。
2025-05-21 11:54:05
527
原创 C++ 模板元编程示例:自定义数组类型检测
2. 当传入类型是 MyArray 或其特化时,匹配第一个 check 函数,返回 std::true_type。1. 使用 SFINAE (Substitution Failure Is Not An Error) 技术。4. 通过 decltype 获取 check 的返回类型,并提取其 value 成员。3. 其他类型匹配第二个 check 函数,返回 std::false_type。
2025-04-16 16:37:24
201
原创 C++ 高性能用法篇--CRTR
CRTP(Curiously Recurring Template Pattern,奇异递归模板模式)是C++中一种基于模板元编程的设计模式,通过实现高效的类型扩展和代码复用。这种方法主要是为了优化多态在动态绑定的过程中所需要的额外的开销。
2025-03-26 14:11:57
502
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅