關於C++14:你需要知道的新特性__C++

來源:互聯網
上載者:User
關於C++14:你需要知道的新特性 使C++更加安全和更加方便的有用新特性

今年8月,經過投票, C++14標準獲得一致通過。目前唯一剩下的工作是ISO進行C++標準的正式發布。在本文中,我關注的是新標準中的幾個重要點,展示了即將到來的改變會如何影響你的編程方式,特別是在使用被現代C++稱之為習語和範型的特性時。

C++標準委員會決心使標準制定過程比過去10年更加快速。這意味著,距上一個標準(即C++11)僅3年的C++14是一次相對較小的發布。這遠非一個令人失望的訊息,恰恰相反,這對程式員來說是個好訊息。因為這樣的話,開發人員能夠即時地跟上新特性。所以,今天你就可以開始使用C++14的新特性了—而且,如果你的工具鏈足夠靈活的話,你幾乎可以使用全部新特性了。

目前你可以從這裡得到標準草案的一份免費副本。遺憾的是,當最終版本的標準發布時,ISO會進行收費。

縮短標準發布的時間間隔可以協助編譯器作者更即時地跟上語言變化。僅隔三年就再次發布,需要調整以適應的變化也就更少。

本文的例子主要在clang 3.4上測試過,clang 3.4覆蓋了大多數C++14的新特性。目前,g++對新特性的覆蓋更少一些,而Visual C++似乎落後更多。 C++14:重大變化

接下來,本文將說明對程式員編碼工作會有重大影響的C++14特性,在給出執行個體的同時,還討論了何時何地因何使用這些特性。 傳回型別推導

在這次發布中,關鍵字auto的作用擴大了。C++語言本身仍然是型別安全的,但是型別安全的機制逐漸改由編譯器而不是程式員來實現。

在C++11中,程式員最初使用auto是用於聲明。這對於像迭代器的建立之類尤其有用,因為完整的正確的類型名可能長得可怕。使用了auto的C++代碼則易讀得多:

1 for ( auto ii = collection.begin() ; ...

在C++14中,auto的使用在好幾個方面得到了擴充。其中之一便是意義非凡的傳回型別推導。在一個函數中編寫如下一行代碼:這段代碼依然完全地是型別安全的,因為編譯器知道begin()在上下文中應該返回什麼類型。因此,ii的類型是毫無疑問的,並且在使用ii的每個地方,編譯器都會進行檢查。

1 return 1.4;

對於程式員和編譯器來說,很顯然,函數返回的是double類型。因此在C++14中,程式員可以用auto代替double來定義函數傳回型別:

1 auto getvalue() {

這個新特性需要注意的一個細節也是相當容易理解的。那就是,如果一個函數有多個返迴路徑,那麼每個返迴路徑返回的值需要具有相同的類型。

1 2 3 4 5 6 7

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.