C++ 這個年紀跟山姆差不多的「老」程式語言,於西元二零一一年正式通過,並發佈了讓這個老語言「回春」的新標準-C++11。同年,C++ 標準委員會達成共識,未來將每「三年」通過一次新的規格,持續替這個老語言<del>續命</del>注入新活水。
雖然唸書時曾接觸 C++,但直到當兵時買了侯捷老師的《C++ Primer》譯本,才正式開始 C++ 學習之旅。三生有幸,退伍後進到台灣的小軟體公司也是以 C++ 為主力,至今十餘載,我依然熱愛程式設計。
此系列的焦點是 Modern C++,利用這個機會讓自己重新檢視這個老語言的新功能。若不小心對讀者有幫助,也算是良好副作用 😁。
C++ 有一個概念叫 Function Object(函數物件),寬鬆一點的定義是:任何可以被當做函數呼叫的「東西」都是一種 Function Object,或...
路上抓十個 C++ 專家問:「C++11 最棒的新功能是什麼?」十有八九會回答:Lambda! 如此有志一同,原因無他。沒有 Lambda 的年代,使用 STL...
Lambda 是 Modern C++ 的主要功能之一,對於 C++ 程式碼的改善有決定性的影響。想要掌握 Modern C++,把 Lambda 學好、弄熟是...
前一篇提到 Lambda Capture by-value。這一篇說明 Capture by-reference——以 & 表示。 同樣分成兩種寫法:...
這是第四篇,也是最後一篇談 Lambda。Lambda 之所以耐談,是因為好用;Lambda 之所以要多談,是因為容易誤用。開發者(我也在其中)常犯的毛病之一—...
今天轉換心情,來聊聊幾個常用的小功能。首先是,Range-Based for Loops。 std::vector<int> vi = {1, 2,...
Structured Binding 是 C++17 納入的新功能,目前主流的編譯器都支援了這個功能。 以往麻煩的寫法,Structured Binding 搭...
今天將焦點放在針對 Class(類別) 設計的新關鍵字。這些關鍵字在「寫出意義明確的程式碼」以及「避免低級錯誤」扮演關鍵要角。 首先,來看看 final。若用於...
碼農們老實說,我們已經習慣了下面的 if 條件式寫法: auto vi = GetIntegers(); if (vi.empty()) // Do A....
今天周末,換個話題。最近有一篇文章引起我的「注意」,是讀了「眼神死」的那種注意。讀完之後,心生一語——鞭數十,驅之別院。 文章作者是一名學生,該文「看起來」是第...