有什么高质量的现代 C++ 风格的开源代码?
很多答案推荐的开源代码都是大部头,说说我学习现代 C++ 的代码的经历吧。
我们说的现代 C++ 风格,一般指的是 C++11 及之后的 C++版本,目前比较实用且得到大多数编译器支持的是 C++11/14/17 标准。
1. Filezilla
2016 年的时候,我无意中发现我用了多年的 FTP 软件 Filezilla 竟然用 C++ 11 重写了。

FileZilla 的源码是一个德国开发者写的,其代码质量也不错,而且使用的是 C++11 写的。可以一边调试一边学习,学完后,我的 C++11 功能得到了大大增强。
不怕你笑话,我在上学的时候,曾看过 Filezilla 0.x 版本的代码,那个时候 UI 界面用的还是 MFC。
贴一下 Filezilla 的部分代码,红框标出来的部分为 C++11 的语法特性:



代码质量总体很不错。我修改了下让其可以在 Visual Studio 中调试,这样你可以一边调试一边学习。
一套源码如果能够容易编译、调试,同时其业务是容易理解的(通俗地说,就是这套代码的功能是什么的),那么才利于新手学习。
我已经将环境和依赖都配置好了,代码获取链接:
张小方:分享一款 ftp 软件 —— filezilla的源码
2. uWebSocket
uWebSocket 是一款开源的 WebSocket 库,最新版使用了大量 C++17 的语法,代码量非常少。
下载地址:
https://github.com/uNetworking/uWebSockets
我们改造了这个项目,用于我们的交易系统的行情推送服务器。


3. TeamTalk 的 PC 端
TeamTalk 是蘑菇街开源的一款用于企业内部的即时通信工具,其代码下载地址是:
https://github.com/balloonwj/TeamTalk/tree/master/win-client



学习方法
C++11/14 网上的资料已经很多了,C++17 的资料不多,重头戏还是 C++11 引入的各种实用特性,这就给读者推荐一本我读过的:
- 《深入理解 C++11:C++11 新特性解析与应用》
- 《深入应用 C++11:代码优化与工程级应用》
- 《C++17 完全指南》
- 《Cpp 17 in Detail》
网上有同学分享出来了:
链接: https://pan.baidu.com/s/1o46vG8xNl3VTFPCi9dnPPQ 密码: gqnr
我在我自己的《C++服务器开发精髓》一书的第一章和第三章中也详细地介绍了 C++11/14/17 新增的常用特性和实用方法,有兴趣的读者也可以阅读一下。

只收藏不点赞的都是耍流氓,关注我
哦~