- 博客(8)
- 收藏
- 关注
原创 编译使用protobuf的项目出现的问题
摘要:在使用protobuf 3.4.0时,g++编译出现absl库的未定义引用错误。手动链接absl库无效,通过pkg-config发现protobuf依赖大量库文件。改用CMake构建,利用find_package自动处理依赖关系,成功编译。相比手动指定依赖库,CMake能更高效地管理新版protobuf的复杂依赖,建议使用CMake替代命令行编译。该方案解决了protobuf新版本依赖复杂的问题。
2025-11-28 13:13:17
322
原创 C++中的operator bool()
本文探讨了C++中operator bool()函数的特性与应用。std::function对象可直接用于if条件判断,这源于其内部实现了operator bool()成员函数。该函数允许类对象在布尔上下文中进行隐式转换,通过重载此函数可自定义类对象的布尔值判断逻辑。文章也对比了C++的operator bool()与C语言的隐式布尔转换机制。
2025-11-20 14:44:46
770
原创 implicit_cast和down_cast
摘要:muduo库中定义了implicit_cast和down_cast两个模板函数用于类型转换。implicit_cast通过编译期检查确保类型转换安全,能阻止不安全的基类指针转派生类指针操作;down_cast则在调试模式下使用dynamic_cast检查向下转换合法性,在发布模式下使用高效的static_cast。相比标准类型转换,这两个函数提供了更好的安全性保障,建议在合适场景优先使用。测试表明implicit_cast能有效阻止不安全的向下转换,弥补了static_cast的缺陷。
2025-11-18 21:26:11
132
原创 C++智能指针总结
本文详细介绍了C++智能指针的原理与应用场景。首先分析了裸指针的内存泄漏问题,引出智能指针通过绑定对象生命周期来解决该问题的思路。文章重点介绍了: 不带引用计数的智能指针(auto_ptr、scope_ptr、unique_ptr)的实现原理及缺陷,其中unique_ptr通过右值引用实现资源转移,成为首选方案; 带引用计数的shared_ptr和weak_ptr,详细解析了引用计数机制,解决了循环引用问题; 智能指针在多线程环境下的应用,通过weak_ptr检测对象存活状态; 介绍了自定义删除器的实现方法
2025-11-14 15:27:30
860
原创 浅谈阻塞与非阻塞、同步与异步
本文主要介绍了IO操作中的阻塞/非阻塞和同步/异步概念。阻塞IO会改变线程状态直到数据就绪,而非阻塞IO通过返回值判断数据状态。同步IO需要请求方自己完成数据读写,而异步IO由内核完成并通知请求方。作者以Linux的recv函数为例,详细说明了不同IO模式的处理方式,并指出阻塞和非阻塞都属于同步IO,只有使用特殊API才是异步IO。
2025-10-28 17:46:47
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1