現代C++與Visual Studio

jopen 10年前發布 | 22K 次閱讀 Visual Studio

  英文原文:Modern C++ and Visual Studio

  在微軟的 Build 大會上,Herb Sutter 就現代C++(Modern C++)的當前狀態發表了一場演講。在微軟,過去的幾年里 C++ 的推廣經歷了一次復興,而關注程度的上升,部分是由 Sutter 主導的。

  即將發布的C++版本

  一開場,Sutter 先總結了 ISO C++ 標準目前到了什么地步。2 月份已經完成了關于C++14 的技術討論,標準委員會目前正在審閱會議記錄,希望今年晚些時候舉行表決,使該標準成為正式的 ISO 標準。

  C++14 被看作一個小幅修訂版本,即將到來的C++17 標準(仍然在設計和討論之中)則被看作一個主要版本。微軟最新的編譯器預覽版(CTP)是去年 11 月發布的。Sutter 非常自信,下一個 CTP 版本(發布日期尚未透露)有望包含下列特性:

  • User-defined literals
  • C++14 generalized lambda capture
  • C++14 libs: std:: user-defined literals
  • Inline namespaces
  • </ul>

      下列特性包含在下一 CTP 版本中的可能性居中(這意味著有可能推遲到更晚的版本中):

    • Universal character names in literals
    • noexcept (incl. conditional)
    • char16_t, char32_t, attributes
    • thread_local
    • unrestricted unions
    • consexpr (except ctors, literal types)
    • constexpr (incl. ctors, literal types)
    • </ul>

        并行 STL(對 PPL、TBB、Amp、CUDA 和 Thrust 的聚合)近日將發布在 CodePlex 上。Sutter 宣布,微軟在過去的兩年贊助的 C++ 會議 GoingNative 已經被 CPPCon 取代,該會議計劃于今年 9 月 7 日-12 日舉行。

        現代C++ 的使用場景

        演講的下一部分,他從版本相關的討論轉到了現代 C++ 在今天的應用開發中的使用場景上。在 Sutter 看來,當存在下列目標或意圖時應該使用C++:

      • 跨平臺的可移植性和兼容性
      • 高性能、完全控制
      • 對硬件和操作系統資源完全的訪問權限
      • C++語言的亮點:默認的值類型、默認的確定性以及默認的連續性
      • </ul>

          Sutter 指出,現代 C++ 并非C++98——現代 C++ 更為清晰、更為安全,同時保留了快速、靈活的特性。這并不是說不再支持老式的 C++ 了,在很多情況下,盡管編譯器會就代碼如何改進給出一些警告和建議,但是老式的代碼還能通過編譯。

          現代 C++ 提供的一個特性就是,使用 make_unique 或 make_shared 替換掉 new,內存管理有所簡化(從程序員的角度看)。不需要 delete,自動化的生命周期管理,而且是異常安全的。

          另一個領域是,如何針對 move 操作更高效地處理值類型。C++11 添加了 move 語義。基于這種方法,對于一會就要刪除的副本,我們可以獲得所有權,而不是復制對象。對于遺留代碼,簡單地利用支持C++14 的編譯器重新編譯,即可通過改進的 move 語義提高其速度。

          編寫更快的代碼

          連續數組非常重要,但是很多人往往領會不到,如果正在訪問很多對象,開發者會非常希望以鄰接的地址順序訪問它們。如果非常關注性能,則要使用數組,而不是鏈表(list)或 arraylist。

          繼續這一主題,Sutter 提供了基準測試,表明在進行插入和刪除操作時,向量(vector)比鏈表(list)好得多。預分配的鏈表比普通的鏈表快,但是兩者都比向量慢。

          Sutter 的演講信息量很大,而且他還是一位很有魅力的演講者。可以訪問 Channel9查看完整的演講。

        來自: InfoQ
         本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
         轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
         本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!