2024年6月30日

C++ : 如何用C语言实现C++的虚函数机制?

摘要: 前言 在 googletest的源码中,看到gtest-matchers.h 中实现的MatcherBase 类自定义了一个 VTable,这种设计实现了一种类似于C++虚函数的机制。C++中的虚函数机制实质上就是通过这种方式实现的,本文用c语言自定义虚函数表VTable实现了一下virtual的功 阅读全文

posted @ 2024-06-30 21:27 七昂的技术之旅 阅读(7) 评论(0) 推荐(0) 编辑

2024年6月27日

C++: 16个基础的C++代码性能优化实例

摘要: 前言 近期推动项目屎山代码进行了一波性能优化,实现了较大的性能提升。这里记录了部分近期代码优化的小技巧,这些例子仅从C++语言层面进行优化,主要在于优化类设计、减少隐含函数调用、减少拷贝等,较为基础实用,但涉及的知识点并不少。本文提供了一个视角,可以帮助了解一些C++代码的不同写法性能开销差异。对于 阅读全文

posted @ 2024-06-27 00:29 七昂的技术之旅 阅读(23) 评论(0) 推荐(0) 编辑

2024年6月7日

C++ : 仅添加一个引用& 就直接导致程序崩溃

摘要: 问题描述 在项目某次开发中,测试过程中出现了coredump问题。经过asan工具检测,报了heap-use-after-free内存错误,最终定位到竟是无意中添加了一个引用&导致的! 开发时因为看到相关类访问类成员的接口函数未返回引用,而是返回了一个拷贝,因此想着要将返回值改为引用,避免多余的拷贝 阅读全文

posted @ 2024-06-07 00:24 七昂的技术之旅 阅读(13) 评论(0) 推荐(0) 编辑

C++: 如何高效地往unordered_map中插入key-value

摘要: C++: unordered_map 花式插入key-value的5种方式 前言 无意中发现std::unordered_map、std::map等插入key-value对在C++17后竟有了 insert() 、operator[] 、 emplace() 、 try_emplace() 和 in 阅读全文

posted @ 2024-06-07 00:23 七昂的技术之旅 阅读(19) 评论(0) 推荐(0) 编辑

2024年3月31日

C++: 虚函数,一些可能被忽视的细节

摘要: C++: 虚函数,一些可能被忽视的细节 引言:关于C++虚函数,对某些细节的理解不深入,可能导致我们的程序无法按预期结果运行,或是表明我们对其基本原理理解不够透彻。本文详细解答以下几个问题:实现多态,忘记写virtual会怎么样?虚函数的默认参数可以重载吗?纯虚函数真的不能有实现吗?析构函数可以是纯 阅读全文

posted @ 2024-03-31 13:45 七昂的技术之旅 阅读(13) 评论(0) 推荐(0) 编辑

2024年1月19日

C++ vector 访问元素用 at 和 [] 有什么区别?

摘要: C++ vector 访问元素用 at and [] 有什么区别? 前言: 最近同事开发过程遇到了一个奇怪的coredump问题,崩溃位置和提交改动没有任何关系,看了几小时后来才发现原来是vector越界访问了,使用了[]越界访问元素。在此,记录一下at()和[]的区别,便于日后可以更快速地定位问题 阅读全文

posted @ 2024-01-19 00:06 七昂的技术之旅 阅读(136) 评论(0) 推荐(0) 编辑

2024年1月14日

为什么C++ 单例局部static初始化是线程安全的?

摘要: 为什么C++ 单例局部static初始化是线程安全的? const bg::AppSettings& bg::AppSettings::GetInstance() { static AppSettings instance; return instance; } 对于以上单例模式代码,在 C++11 阅读全文

posted @ 2024-01-14 19:24 七昂的技术之旅 阅读(81) 评论(0) 推荐(0) 编辑

2024年1月13日

C++源码中司空见惯的PIMPL是什么?

摘要: 前言: C++源码中司空见惯的PIMPL是什么?用原始指针、std::unique_ptr和std::shared_ptr指向Implementation,会有什么不同?优缺点是什么?读完这篇文章,相信你能搞懂这种设计方式并将其运用于实践,也将更容易阅读源码。 1. PIMPL是什么? PIMPL是 阅读全文

posted @ 2024-01-13 22:51 七昂的技术之旅 阅读(116) 评论(0) 推荐(0) 编辑

2023年12月18日

万字长文全面详解现代C++智能指针:原理、应用和陷阱

摘要: 现代C++智能指针详解:原理、应用和陷阱 智能指针是C++11引入的新特性。本篇文章详细介绍了C++智能指针的原理、应用与陷阱,通过丰富的代码实例介绍了三种智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr的原理、使用方法和适用场景,还介绍了智能指针 阅读全文

posted @ 2023-12-18 14:37 七昂的技术之旅 阅读(483) 评论(0) 推荐(0) 编辑

2023年12月16日

C++ 高效使用智能指针的8个建议

摘要: C++ 高效使用智能指针的8个建议 前言:智能指针是C++11提供的新特性,它基于RAII实现,可以自动管理内存资源,避免内存泄漏的发生,但是智能指针也并不是万能的,如果不正确使用智能指针,也会导致内存泄漏的发生,因此,我们需要了解如何高效使用智能指针避免一些可能的陷阱。本文总结了8个关于智能指针的 阅读全文

posted @ 2023-12-16 13:40 七昂的技术之旅 阅读(245) 评论(0) 推荐(1) 编辑

导航