很多答案推荐的开源代码都是大部头,说说我学习现代 C++ 的代码的经历吧。
我们说的现代 C++ 风格,一般指的是 C++11 及之后的 C++版本,目前比较实用且得到大多数编译器支持的是 C++11/14/17 标准。
1. Filezilla
2016 年的时候,我无意中发现我用了多年的 FTP 软件 Filezilla 竟然用 C++ 11 重写了。
![](https://pic3.zhimg.com/80/v2-f0696c7c89520c610e9f715eee3f7b71_720w.jpg?source=1940ef5c)
FileZilla 的源码是一个德国开发者写的,其代码质量也不错,而且使用的是 C++11 写的。可以一边调试一边学习,学完后,我的 C++11 功能得到了大大增强。
不怕你笑话,我在上学的时候,曾看过 Filezilla 0.x 版本的代码,那个时候 UI 界面用的还是 MFC。
贴一下 Filezilla 的部分代码,红框标出来的部分为 C++11 的语法特性:
![](https://pic2.zhimg.com/80/v2-bfe01139e12e437b8cb6302f9bf1452d_720w.jpg?source=1940ef5c)
![](https://pic3.zhimg.com/80/v2-12288cb2357d294e668234bebfed7299_720w.jpg?source=1940ef5c)
![](https://pic1.zhimg.com/80/v2-fb37f70fce232281a1bd8dda28759f02_720w.jpg?source=1940ef5c)
代码质量总体很不错。我修改了下让其可以在 Visual Studio 中调试,这样你可以一边调试一边学习。
一套源码如果能够容易编译、调试,同时其业务是容易理解的(通俗地说,就是这套代码的功能是什么的),那么才利于新手学习。
我已经将环境和依赖都配置好了,代码获取链接:
张小方:分享一款 ftp 软件 —— filezilla的源码
2. uWebSocket
uWebSocket 是一款开源的 WebSocket 库,最新版使用了大量 C++17 的语法,代码量非常少。
下载地址:
https://github.com/uNetworking/uWebSockets
我们改造了这个项目,用于我们的交易系统的行情推送服务器。
![](https://pic1.zhimg.com/80/v2-e097da33275ee6749fc011e87e9f6696_720w.jpg?source=1940ef5c)
![](https://pic1.zhimg.com/80/v2-ce9494f8b1915fc7ddf8072c9db37fef_720w.jpg?source=1940ef5c)
3. TeamTalk 的 PC 端
TeamTalk 是蘑菇街开源的一款用于企业内部的即时通信工具,其代码下载地址是:
https://github.com/balloonwj/TeamTalk/tree/master/win-client
![](https://pic3.zhimg.com/80/v2-fef3144d81e14c0db7ebd0d3b54d4a74_720w.jpg?source=1940ef5c)
![](https://pic3.zhimg.com/80/v2-454e69594bba8016fe9f4e95ab46c382_720w.jpg?source=1940ef5c)
![](https://pic1.zhimg.com/80/v2-e4001ffa253ef13918cb2314090a25d9_720w.jpg?source=1940ef5c)
学习方法
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 新增的常用特性和实用方法,有兴趣的读者也可以阅读一下。
![](https://pic1.zhimg.com/80/v2-761c70ade7e85f8e19af1a32fd8f1f3f_720w.jpg?source=1940ef5c)
只收藏不点赞的都是耍流氓,关注我
哦~