
I、保持語言的穩定性和兼容性” 總結:主要是utf8字符串,虛函數override/final支持 。1、c11宏和類型(考慮和c99兼容):STDC_HOSTED、STDC、__VA_ARGS__宏可以替代…、__cplusplus宏用于c和c混編,非布爾值還可以判斷是否支持c11;_Pragma操作符 。long long 64bit類型, static_assert用于編譯時警告,表達式必須是常量 。string都是utf-8類型的,可以和utf-16,char*等轉換 ??捎胹izeof(類非靜態成員)獲取成員大小 。2、面向對象語言特性完善:虛函數override/final支持;增加非靜態成員變量就地初始化=和{}符號;noexcept函數聲明沒有異常拋出,如果拋出了則用stdterminate()來終止程序; 3、完善拓展模板語法:friend FriendClass就可以聲明友元,模板中也可使用;模板函數也支持了默認參數;顯式模板實例化和外部模板聲明優化鏈接;匿名和局部的類/結構體等,都可以作為模板實參 。
II、“通用為本,專用為末” 總結:主要是右值引用,移動語義,完美轉發的引入 。1、對性能的更加關注,和C高效兼容:引入右值引用類型,函數模板完美轉發實現;和C語言的兼容,pod類型的定義;聯合體的拓展 。2、面向對象編寫要更加高效和簡單:移動構造函數,移動語義;繼承構造函數和構造函數委派; explict拓展到類型轉換函數;類型初始化列表的支持 。3、完善拓展泛型編程語法:inline名字空間允許父空間中對模板重定義;using別名可以用于模板和實例化模板;實例化模板時對SFINAE原則拓展,允許模板參數中存在非實例化的表達式存在 。
III、“易學易用” 總結:主要是是類型推導規則引入,for自動范圍和迭代引入 。1、基礎符號編譯器增強:1).>>避免模板或類型轉換中需添加額外的空格 。2).for(auto &e: containerObj){}自動范圍和迭代語句,數組和STL容器都支持(stl中e是元素類型),自定義容器需重載 。2、新增了類型推導規則: 1).auto編譯期類型多用于函數或表達式內部的變量,不能用于函數參數,類成員,數組和模板實例化中(雖然提供值),可以用于初始化列表和new對象中 。會去掉volatile和const修飾符 。2).decltype是最靈活的編譯期類型,根據表達式而不是只推導類型,可以用在所有表達式類型確定的地方(函數返回值是不確定的),可以帶走volatile和const修飾符 。左值判斷技巧 。auto可以減少代碼量,decltype可以更靈活的獲得表達式運算后的類型,他們都有類型自適應性(值修改后類型不用變),可以多用于庫相關代碼的編寫 。業務邏輯用確定類型會清晰些 。3、追蹤返回類型,auto和decltype的結合,auto Sum(T1 &t1, T2 &t2) -> decltype(t1 t2) { return t1 t2}能確定運算后變化的類型,增強函數和函數指針泛型能力 。
IV 、“提高類型安全” 總結: 1、新枚舉類型:新增了enum class enumName:type{}作用域限定符和類型 。2、智能指針:unique_ptr用在單模塊內使用,shared_ptr和weak_ptr用引用計數在多個模塊間共享 。記得初始化;判是否有效,*和->使用,需轉換為原指針迭代跳轉;move或reset后要小心使用 。3、GC: 標記-清除GC實現,現在暫時定義了接口,原因是指針的太靈活(指針任意在內存中跳轉)導致隱藏指針,GC會誤刪,用declare_reachable等標記隱藏指針解決,且delete和回收是兼容的 。
V、”提高性能及其操作硬件的能力“ 總結: 1、1)constexpr是編譯期常量,constexpr元編程的引入;2)變長參數模板類和函數模板,庫編寫用簡單實例思維解決,非庫編寫者用tuple和容器的emplace系列函數即可 。元編程對庫程序員是一種簡化,而不是復雜化 。2、并行編程: 1)原子類型:atomic定義基本類型,自定義類型用_Atomic實現(現在還不支持),原子類型是編譯器用了系統底層的總線鎖或存儲鎖加快鎖定,其它同時訪問線程會被阻塞,atomic_flag自旋無鎖同步,memory_order對弱順序代碼執行內存模型調優,是cpp11并行編程中的一大亮點 。2).多線程庫引入:cpp11內置的線程其實是封裝了pthread線程,使用更加簡單,但是沒有pthread底層和控制能力強 。3).TLS變量,對全局靜態常量數據和線程生命期綁定,關鍵字是thread_local 。cpp11 errno變量是線程局部的而不是全局的 。3、進程退出:用quick_exit需要退出回調的用at_quick_exit(目前LLVM還沒實現);異常退出還是要terminate實現 。
推薦閱讀
- 賽爾號泰格爾刷什么,五神獸的真實戰力
- 賽爾號譜尼帶什么刻印,看實戰魔草壓制譜尼就知道了
- 火影忍者ol藥兜師怎么得,「火影忍者OL」輕風首飾實戰應用
- 投資一萬元可以做的項目 一萬元能做什么生意
- 彈彈堂3寵物怎么辨別好壞,《彈彈堂》實戰型寵物解析
- 教你百度理財APP購買理財項目的圖文操作。
- 網頁游戲推廣員是做什么的,躺賺項目之玩游戲掙錢
- 英魂呂布怎么對付,呂布FMVP皮膚
- 云竹協作創建一個子項目的相關操作講解。
- 云竹協作設置項目的相關操作講解。
