發表於2024-12-21
書[0名0]: | 深入理解C++11:C++11新特性解析與應用[按需印刷]|3801275 |
圖書定價: | 69元 |
圖書作者: | Michael Wong;IBM XL編譯器中[0國0]開發團隊 |
齣版社: | 機械工業齣版社 |
齣版日期: | 2013-06-01 0:00:00 |
ISBN號: | 9787111426608 |
開本: | 16開 |
頁數: | 308 |
版次: | 1-1 |
作者簡介 |
Michael Wong中文[0名0]黃根持,C++11標準委員[0會0](WG21)委員,WG21加拿[0大0]代錶團團長及IBM公司代錶(投票人),WG21 SG5(transactional Memory study group)[0學0]習小組組長。除此之外,Michael還是OpenMP委員[0會0]的CEO,SCC(Standards Council of Canada)的副主席。Michael是多個C++11/OpenMP/STM新特性的閤作編寫者,活躍於各種技術[0會0]議,而且為Programming Committee of Boost以及IWOMP等[0國0]際[0會0]議服務。Michael也是IBM公司的高級技術專傢,[0領0]導IBM XL C++編譯器、XL C編譯器的開發工作,[0當0]前緻力於IBM編譯器的C++11新特性部署。Michael在並行編程、C++基準測試、對象模型、泛型編程、模闆元編程等多個技術[0領0]域均有涉獵,並且在對象模型以及事務內存等方麵取得過多個專利。早年Michael於多倫多[0大0][0學0]獲取得瞭天體物理[0學0]的[0學0]士[0學0]位,並在滑鐵盧[0大0][0學0]獲得瞭碩士[0學0]位。在加入IBM之前,Michael曾先後供職於[0大0]衛?鄧祿普天文颱(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。IBM XL編譯器中[0國0]開發團隊,IBM擁有悠久的編譯器開發曆[0史0](始於上世紀80年代),在全球有將近400[0名0]高素質工程師組成的研發團隊,其中包括許多世界[0知0][0名0]的研究[0學0]者和技術專傢。IBM一直以來都是編程語言的製定者和倡導者之一,並將長期在編譯[0領0]域進行研發和投資。IBM編譯器中[0國0]開發團隊於2010年在上海成立,現擁有編譯器前端開發人員(C/C++)、後端開發人員、測試人員,以及性能分析人員共16人。團隊與IBM北美編譯器團隊緊密閤作,共同開發、測試和發布基於POWER係統的AIX及Linux平颱下的XL C/C++和XL Fortran係列産[0品0],並對其提供技術支持。雖然團隊成立時間不長,但已於2012年成功發布新版本的XL C/C++ for Linux V12.1 & XL Fortran for Linux V14.1,並獲得7項發明專利。團隊成員擁有較豐富的編譯器開發經驗,對編譯技術、編程語言、性能[0優0]化和並行計算等各[0領0]域都有一定的研究,也對C++11標準的各種新特性有較早的研究和理解,並正在實際地參與C++11新特性的開發工作。 |
內容簡介 |
《深入理解C++11:C++11新特性解析與應用》主要內容:[0國0]內[0首0]本全麵深入解讀C++11新標準的專著,由C++標準委員[0會0]代錶和IBM XL編譯器中[0國0]開發團隊共同撰寫。不僅詳細闡述瞭C++11標準的設計原則,而且係統地講解瞭C++11新標準中的所有新語言特性、新標準庫特性、對原有特性的改進,以及如何應用所有這些新特性。 全書一共8章:[0第0]1章從設計思維和應用範疇兩個維度對C++11新標準中的所有特性進行瞭分類,呈現瞭C++11新特性的原貌;[0第0]2章講解瞭在保證與C語言和舊版C++標準充分兼容的原則下增加的一些新特性;[0第0]3章講解瞭具有廣泛可用性、能與其他已有的或者新增的特性結閤起來使用的、具有普適性的一些新特性;[0第0]4章講解瞭C++11新標準對原有一些語言特性的改進,這些特性不僅能讓C++變得更強[0大0],還能提升程序員編寫代碼的效率;[0第0]5章講解瞭C++11在安全方麵所做的改進,主要涵蓋枚舉類型安全和指針安全兩個方麵的內容;[0第0]6章講解瞭為瞭進一步提升和挖掘C++程序性能和讓C++能更好地適應各種新硬件的發展而設計的新特性,如多核、多綫程、並行編程方麵的新特性;[0第0]7章講解瞭一些顛覆C++一貫設計思想的新特性,如lambda錶達式等;[0第0]8章講解瞭C++11為瞭解決C++編程中各種典型實際問題而做齣的有效改進,如對Unicode的深入支持等。附錄中則介紹瞭C++11標準與其他相關標準的兼容性和區彆、C++11中棄用的特性、編譯器對C++11的支持情況,以及[0學0]習C++11的相關資源。 |
目錄 |
《深入理解C++11:C++11新特性解析與應用》 免責聲明 序 前言 [0第0]1章 新標準的誕生 1 1.1 曙光:C++11標準的誕生 1 1.1.1 C++11/C++0x(以及C11/C1x)—新標準誕生 1 1.1.2 什麼是C++11/C++0x 2 1.1.3 新C++語言的設計目標 3 1.2 今時今日的C++ 5 1.2.1 C++的江湖地位 5 1.2.2 C++11語言變化的[0領0]域 5 1.3 C++11特性的分類 7 1.4 C++特性一覽 11 1.4.1 穩定性與兼容性之間的抉擇 11 1.4.2 更傾嚮於使用庫而不是擴展語言來實現特性 12 1.4.3 更傾嚮於通用的而不是特殊的手段來實現特性 13 1.4.4 專傢新手一概支持 13 1.4.5 增強類型的安全性 14 1.4.6 與硬件緊密閤作 14 1.4.7 開發能夠改變人們思維方式的特性 15 1.4.8 融入編程現實 16 1.5 本書的約定 17 1.5.1 關於一些術語的翻譯 17 1.5.2 關於代碼中的注釋 17 1.5.3 關於本書中的代碼示例與實驗平颱 18 [0第0]2章 保證穩定性和兼容性 19 2.1 保持與C99兼容 19 2.1.1 預定義宏 19 2.1.2 __func__預定義標識符 20 2.1.3 _Pragma操作符 22 2.1.4 變長參數的宏定義以及__VA_ARGS__ 22 2.1.5 寬窄字符串的連接 23 2.2 long long整型 23 2.3 擴展的整型 25 2.4 宏__cplusplus 26 2.5 靜態斷言 27 2.5.1 斷言:運行時與預處理時 27 2.5.2 靜態斷言與static_assert 28 2.6 [0no0]except修飾符與[0no0]except操作符 32 2.7 快速初始化成員變量 36 2.8 非靜態成員的sizeof 39 2.9 擴展的friend語[0法0] 40 2.10 final/override控製 44 2.11 模闆函數的默認模闆參數 48 2.12 外部模闆 50 2.12.1 為什麼需要外部模闆 50 2.12.2 顯式的實例化與外部模闆的聲明 52 2.13 局部和匿[0名0]類型作模闆實參 54 2.14 本章小結 55 [0第0]3章 通用為本,專用為末 57 3.1 繼承構造函數 57 3.2 委派構造函數 62 3.3 右值引用:移動語義和完美轉發 68 3.3.1 指針成員與拷貝構造 68 3.3.2 移動語義 69 3.3.3 左值、右值與右值引用 75 3.3.4 std::move:強製轉化為右值 80 3.3.5 移動語義的一些其他問題 82 3.3.6 完美轉發 85 3.4 顯式轉換操作符 89 3.5 列錶初始化 92 3.5.1 初始化列錶 92 3.5.2 防止類型收窄 96 3.6 POD類型 98 3.7 非受限聯閤體 106 3.8 用戶自定義字麵量 110 3.9 內聯[0名0]字空間 113 3.10 模闆的彆[0名0] 118 3.11 一般化的SFINEA規則 119 3.12 本章小結 121 [0第0]4章 新手易[0學0],老兵易用 123 4.1 右尖括號>的改進 123 4.2 auto類型推導 124 4.2.1 靜態類型、動態類型與類型推導 124 4.2.2 auto的[0優0]勢 126 4.2.3 auto的使用細則 130 4.3 decltype 134 4.3.1 typeid與decltype 134 4.3.2 decltype的應用 136 4.3.3 decltype推導四規則 140 4.3.4 cv限製符的繼承與冗餘的符號 143 4.4 追蹤返迴類型 145 4.4.1 追蹤返迴類型的引入 145 4.4.2 使用追蹤返迴類型的函數 146 4.5 基於範圍的for循環 150 4.6 本章小結 153 [0第0]5章 提高類型安全 155 5.1 強類型枚舉 155 5.1.1 枚舉:分門彆類與數值的[0名0]字 155 5.1.2 有缺陷的枚舉類型 156 5.1.3 強類型枚舉以及C++11對原有枚舉類型的擴展 160 5.2 堆內存管理:智能指針與垃圾迴收 163 5.2.1 顯式內存管理 163 5.2.2 C++11的智能指針 164 5.2.3 垃圾迴收的分類 167 5.2.4 C++與垃圾迴收 169 5.2.5 C++11與小垃圾迴收支持 170 5.2.6 垃圾迴收的兼容性 172 5.3 本章小結 173 [0第0]6章 提高性能及操作硬件的能力 174 6.1 常量錶達式 174 6.1.1 運行時常量性與編譯時常量性 174 6.1.2 常量錶達式函數 176 6.1.3 常量錶達式值 178 6.1.4 常量錶達式的其他應用 180 6.2 變長模闆 183 6.2.1 變長函數和變長的模闆參數 183 6.2.2 變長模闆:模闆參數包和函數參數包 185 6.2.3 變長模闆:進階 189 6.3 原子類型與原子操作 196 6.3.1 並行編程、多綫程與C++11 196 6.3.2 原子操作與C++11原子類型 197 6.3.3 內存模型,順序一緻性與memory_order 203 6.4 綫程局部存儲 214 6.5 快速退齣:quick_exit與at_quick_exit 216 6.6 本章小結 219 [0第0]7章 為改變思考方式而改變 220 7.1 指針空值—nullptr 220 7.1.1 指針空值:從0到NULL,再到nullptr 220 7.1.2 nullptr和nullptr_t 223 7.1.3 一些關於nullptr規則的討論 225 7.2 默認函數的控製 227 7.2.1 類與默認函數 227 7.2.2 “= default”與“= deleted” 230 7.3 lambda函數 234 7.3.1 lambda的一些曆[0史0] 234 7.3.2 C++11中的lambda函數 235 7.3.3 lambda與仿函數 238 7.3.4 lambda的基礎使用 240 7.3.5 關於lambda的一些問題及有趣的實驗 243 7.3.6 lambda與STL 247 7.3.7 更多的一些關於lambda的討論 254 7.4 本章小結 256 [0第0]8章 融入實際應用 258 8.1 對齊支持 258 8.1.1 數據對齊 258 8.1.2 C++11的alig[0no0]f和alignas 261 8.2 通用屬性 267 8.2.1 語言擴展到通用屬性 267 8.2.2 C++11的通用屬性 268 8.2.3 預定義的通用屬性 270 8.3 Unicode支持 274 8.3.1 字符集、編碼和Unicode 274 8.3.2 C++11中的Unicode支持 276 8.3.3 關於Unicode的庫支持 280 8.4 原生字符串字麵量 284 8.5 本章小結 286 附錄A C++11對其他標準的不兼容項目 287 附錄B 棄用的特性 294 附錄C 編譯器支持 301 附錄D 相關資源 304 |