有什麼高質量的現代 C++ 風格的開原始碼?
很多答案推薦的開原始碼都是大部頭,說說我學習現代 C++ 的程式碼的經歷吧。
我們說的現代 C++ 風格,一般指的是 C++11 及之後的 C++版本,目前比較實用且得到大多數編譯器支援的是 C++11/14/17 標準。
1. Filezilla
2016 年的時候,我無意中發現我用了多年的 FTP 軟體 Filezilla 竟然用 C++ 11 重寫了。
Filezilla介面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 新增的常用特性和實用方法,有興趣的讀者也可以閱讀一下。
只收藏不點讚的都是耍流氓,關注我
@張小方 哦~ 漫思