- 博客(3)
- 收藏
- 关注
原创 C++ 类型擦除技术:从虚函数到 Concepts 及 Proxy 库实践
本文将深入探讨 C++ 中类型擦除的几种实现方式,从传统的基于虚函数的方法,到 C++20 引入的 Concepts,再到使用现代 C++ 库(如 Microsoft Proxy 库)的实践,比较它们的优缺点和适用场景。模板构造函数使得 Shape 类可以接受任何类型的对象,而 pImpl 惯用法和类型擦除则隐藏了具体类型的细节,使得 Shape 类的使用者可以统一地操作不同类型的形状对象。C++20 Concepts 提供了编译时检查和更清晰的错误消息,性能更好,代码更简洁,是现代 C++ 推荐的方式。
2025-02-13 10:18:26
1465
原创 类型擦除:C++多态性的现代解决方案与新一代多态库Proxy
值语义与移动语义的优化:Proxy 对象的值行为与高效拷贝: 虽然 Microsoft Proxy 库的核心是基于指针语义的,即 proxy 对象本质上是对被代理对象指针的封装,但这并不妨碍 Proxy 库充分尊重和利用 C++ 的值语义和移动语义来优化性能。这样的代码是完全有效的,并且符合值语义的直觉。指针语义保证了 Proxy 对象的轻量和多态性,而对 值语义和移动语义的优化 则确保了 Proxy 对象在像值类型一样使用时,仍然能够保持极高的性能,避免了传统值类型拷贝的性能瓶颈。
2025-02-13 10:14:39
1415
原创 从回调地狱到协程天堂:C++异步IO的进化之路——基于C++20,Boost.Asio的实践
通过异步 I/O,程序可以在等待 I/O 操作完成的同时,执行其他计算任务,从而提高 CPU 利用率和程序的整体吞吐量。IOCP 服务线程的处理: IOCP 服务线程(即运行 io_context.run() 的线程)会从完成队列(非 IOCP 服务线程情况)或内部任务队列(IOCP 服务线程情况)中取出完成通知,并在 io_context 的上下文中执行对应的完成处理程序。没有高效的 I/O 机制,应用程序将寸步难行。阻塞式 I/O 的瓶颈: 传统的 I/O 操作(如文件读写、网络请求)通常是阻塞的。
2025-02-13 10:11:55
1370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人