- 在线时间
- 686 小时
- 最后登录
- 2024-7-18
- 注册时间
- 2014-6-30
- 听众数
- 148
- 收听数
- 1
- 能力
- 1 分
- 体力
- 17867 点
- 威望
- 1 点
- 阅读权限
- 200
- 积分
- 5990
- 相册
- 1
- 日志
- 0
- 记录
- 4
- 帖子
- 1003
- 主题
- 377
- 精华
- 1
- 分享
- 0
- 好友
- 877
升级   19.8% TA的每日心情 | 奋斗 2016-7-14 13:54 |
|---|
签到天数: 219 天 [LV.7]常住居民III
 群组: 2015年美赛冲刺 群组: 高等数学串讲 群组: 2014第三期英语写作 群组: SAS数据分析大赛冲刺 群组: 2015美赛优秀论文解析 |
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑
M+ W8 u; d% h; J1 Z/ D: @- `: t2 O- k T, d6 z( D8 ^! p) B7 u
内容简介' M* @# H. }( I: k9 a
《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
& C- v" B0 }% b) N% _《深入理解C++11:C++11新特性解析与应用》一共8章:第1章从设计思维和应用范畴两个维度对C++11新标准中的所有特性进行了分类,呈现了C++11新特性的原貌;第2章讲解了在保证与C语言和旧版C++标准充分兼容的原则下增加的一些新特性;第3章讲解了具有广泛可用性、能与其他已有的或者新增的特性结合起来使用的、具有普适性的一些新特性;第4章讲解了C++11新标准对原有一些语言特性的改进,这些特性不仅能让C++变得更强大,还能提升程序员编写代码的效率;第5章讲解了C++11在安全方面所做的改进,主要涵盖枚举类型安全和指针安全两个方面的内容;第6章讲解了为了进一步提升和挖掘C++程序性能和让C++能更好地适应各种新硬件的发展而设计的新特性,如多核、多线程、并行编程方面的新特性;第7章讲解了一些颠覆C++一贯设计思想的新特性,如lambda表达式等;第8章讲解了C++11为了解决C++编程中各种典型实际问题而做出的有效改进,如对Unicode的深入支持等。附录中则介绍了C++11标准与其他相关标准的兼容性和区别、C++11中弃用的特性、编译器对C++11的支持情况,以及学习C++11的相关资源。
$ m, D/ ?6 H* n1 D3 j" T
- p" n7 m/ ?' j: \+ v+ i编辑推荐3 `7 [; z- I/ j3 }
《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。 X2 _$ c3 W T3 t, n) D
6 \0 l2 C- \9 x, _1 c2 p- Z作者简介
4 T8 E) s4 c/ ?作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
8 D2 k! w4 P, ?6 m) {4 O' c9 h j3 \! c5 Q
Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
5 r. l7 ?8 \2 i: l* S% [Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。) n3 Q6 t* h& }2 r& ^ H C! ?" v
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。2 H& W) e% P- n& W
IBM XL编译器中国开发团队,IBM拥有悠久的编译器开发历史(始于上世纪80年代),在全球有将近400名高素质工程师组成的研发团队,其中包括许多世界知名的研究学者和技术专家。IBM一直以来都是编程语言的制定者和倡导者之一,并将长期在编译领域进行研发和投资。IBM编译器中国开发团队于2010年在上海成立,现拥有编译器前端开发人员(C/C++)、后端开发人员、测试人员,以及性能分析人员共16人。团队与IBM北美编译器团队紧密合作,共同开发、测试和发布基于POWER系统的AIX及Linux平台下的XL C/C++和XL Fortran系列产品,并对其提供技术支持。虽然团队成立时间不长,但已于2012年成功发布最新版本的XL C/C++ for Linux V12.1 & XL Fortran for Linux V14.1,并获得7项发明专利。团队成员拥有较丰富的编译器开发经验,对编译技术、编程语言、性能优化和并行计算等各领域都有一定的研究,也对C++11标准的各种新特性有较早的研究和理解,并正在实际地参与C++11新特性的开发工作。1 g4 Q X& b0 S+ l
8 C+ Q. y7 m3 v) a3 ?
目录免责声明. ~: z2 Q& v+ h$ s
序2 w7 X6 L/ U) d6 r6 n: x9 H
前言9 h5 u: S" e1 s& _: V* A3 b
第1章新标准的诞生1" t" Q' Y# [9 B: m% N/ w
1.1曙光:C++11标准的诞生18 ?; @( v, ?+ V3 p9 Y+ F# W
1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1
: ]8 b0 _9 v1 R% X$ n1.1.2什么是C++11/C++0x2; i2 G; ?0 J0 \& k/ _0 m8 W
1.1.3新C++语言的设计目标38 U ?, t& v `5 j% L: X+ Z0 q, U6 y
1.2今时今日的C++5
: a' H# n- Q8 P4 l4 }9 _4 J8 A1.2.1C++的江湖地位5
9 f' ^ r2 a$ Q. T% z( C1.2.2C++11语言变化的领域5; X# M4 ^9 D* L7 v
1.3C++11特性的分类7
# g, o9 l. l& T, b1.4C++特性一览11& Z- X( {0 o7 W* b$ M5 x8 `
1.4.1稳定性与兼容性之间的抉择11
* v( u& Q5 h9 o& Q) H, K1.4.2更倾向于使用库而不是扩展语言来实现特性129 I& F( j. s8 G) Y7 J' f9 U0 `! x
1.4.3更倾向于通用的而不是特殊的手段来实现特性13
4 `& r# @) U3 F$ L% W+ W$ k1.4.4专家新手一概支持13
( M9 q# {, c0 l( ~1.4.5增强类型的安全性14
: \4 c6 K( y d( b, g6 b( Q8 I1.4.6与硬件紧密合作14
5 p( }6 V* f: d1.4.7开发能够改变人们思维方式的特性159 c2 z% [. q; ]; ?. W: L3 e
1.4.8融入编程现实16. M, j8 n+ g6 w; s' t
1.5本书的约定17
/ j9 ^7 D) ^7 S1.5.1关于一些术语的翻译17
$ C' |2 e4 u' p1.5.2关于代码中的注释17' `7 k2 h7 ]5 u0 c8 f5 r
1.5.3关于本书中的代码示例与实验平台18
3 ?! {( ]1 ^5 o$ g! l第2章保证稳定性和兼容性19
; ?2 w1 Q5 R, `8 k2.1保持与C99兼容19
. a* b/ ]9 x" f/ |- f2.1.1预定义宏190 g: m6 a5 @, a7 o# _0 l* F
2.1.2_func_预定义标识符20& `8 X' a' C5 u$ H' s
2.1.3_Pragma操作符22- Y9 O" ^0 @9 ~! Q; O* ~( P
2.1.4变长参数的宏定义以及_VA_ARGS_22# K% x8 ^8 {. j% I% L
2.1.5宽窄字符串的连接23& q3 ^% y. U& i
2.2longlong整型23; I8 x" i- ^* X& p% G
2.3扩展的整型25
: ]" X- j$ }+ l% |2.4宏_cplusplus263 |# v6 h9 P- J3 {5 b% S
2.5静态断言27
% h7 s$ ~+ P$ V- }2.5.1断言:运行时与预处理时27# s/ \4 y( M% s- b* l5 m
2.5.2静态断言与static_assert28
% V9 Y6 @$ ~& F$ p9 ?. J2.6noexcept修饰符与noexcept操作符32 g, i0 j, j, j" f. x% j
2.7快速初始化成员变量36
$ e) e4 ?( r# q4 \2.8非静态成员的sizeof39! Y& s4 z3 n$ _$ H7 s& e8 ?6 q4 B5 e
2.9扩展的friend语法40
# \1 W0 \3 D$ ~9 B1 T% ]+ m4 {2.10final/override控制441 k( f! V8 U& D+ ~
2.11模板函数的默认模板参数48
' l/ f0 l `5 y# h2.12外部模板502 w( O* J, w& o
2.12.1为什么需要外部模板50& y: Q/ ]8 }2 H }! s
2.12.2显式的实例化与外部模板的声明52; j& ^" g- `+ Z3 ~" n
2.13局部和匿名类型作模板实参547 W& j7 J0 f3 t+ \; P# z
2.14本章小结55. S! g* Z/ Z. }( J7 S
第3章通用为本,专用为末57
- U; w# ?6 N) {) z4 Q3.1继承构造函数57
: k" j6 W6 r' F* O7 X3.2委派构造函数62+ t2 S o( w# ]" d0 ~: w: Y7 w3 b
3.3右值引用:移动语义和完美转发68
' j5 w! S6 B, K7 k* x( N, s% i- V- b3.3.1指针成员与拷贝构造68
1 H8 n- s4 L; O" L; H# n% s! h9 t3.3.2移动语义69; r) \7 V( w/ c& e* C
3.3.3左值、右值与右值引用75& |% c7 y2 N F8 o1 H# g
3.3.4std:move:强制转化为右值80
: w( N8 z+ q6 w3 H. M# G3.3.5移动语义的一些其他问题82% p" N) R/ l1 m8 G! D( @! J- ^6 s
3.3.6完美转发85
+ a5 h# S+ n: X h3.4显式转换操作符89
0 i& D4 U; E! _3.5列表初始化92
9 i W' H# s* {% r9 g; A3.5.1初始化列表92
# ~+ b) Q: h: P' D3.5.2防止类型收窄96
% P/ Z9 |% V$ y/ l* X, ]3.6POD类型98
1 m ~ x3 j' a, b! d. A3.7非受限联合体106
7 B3 U% \" H1 S7 p3.8用户自定义字面量110; T9 a1 f! [2 E I2 w% g! f
3.9内联名字空间113" }$ B5 c& }+ ]$ f/ {
3.10模板的别名118- w4 g( J, r5 b8 S' l/ c3 a
3.11一般化的SFINEA规则119
; t0 j0 z8 W+ G) n# F, j* C: [3.12本章小结121+ U8 L6 c3 q" x3 r! @% U2 r" s
第4章新手易学,老兵易用123
( W: d7 W2 [- o+ G. C v4.1右尖括号>的改进123 t2 x7 K3 ^* N C- Z; a
4.2auto类型推导124
' Q, D5 ^! I- N& u4.2.1静态类型、动态类型与类型推导1248 W- q: j; a2 c4 K) o
4.2.2auto的优势126' H( g0 {4 V/ @1 H
4.2.3auto的使用细则1305 K: o; E0 ~3 l! }2 n5 b J& s4 a
4.3decltype1346 J! t1 H3 e8 l* Q4 ^6 P4 X
4.3.1typeid与decltype134
- A8 V8 G- J6 j C4.3.2decltype的应用1367 `' d1 ?0 N9 A7 Z/ f( K: k) N- o6 ~
4.3.3decltype推导四规则140
- i1 `! G8 K u5 r9 Z4.3.4cv限制符的继承与冗余的符号1434 ]1 f4 {$ O6 O# G8 s; g' M0 |
4.4追踪返回类型1458 b0 R1 T: l/ z* q& C* e5 n
4.4.1追踪返回类型的引入145
& k6 Q5 ]( c/ C) d8 r6 w" w# V4.4.2使用追踪返回类型的函数146
, j% l8 K4 }- Q8 S" |) R& ~$ L4.5基于范围的for循环150& u$ j C# S# q$ B" n5 R+ |, O
4.6本章小结1532 n/ F2 j6 W) m, @
第5章提高类型安全155, e F( U" g( [) g- S& j% l, i% `
5.1强类型枚举155
- v0 f0 Y, G# Y% \, T, q) x5 w5.1.1枚举:分门别类与数值的名字155
" O" B+ @1 [! z9 V' ~4 A) X5.1.2有缺陷的枚举类型156
0 A* n* }# I1 w* w5.1.3强类型枚举以及C++11对原有枚举类型的扩展1606 R- I' R5 e! i( L4 q; K7 G9 ^: w
5.2堆内存管理:智能指针与垃圾回收1638 ~& `2 ?- D' @9 J0 s
5.2.1显式内存管理163) M4 ~9 q/ |9 ~6 C$ b
5.2.2C++11的智能指针164
! l6 D5 K, [' ~3 `6 H4 P0 s* F5.2.3垃圾回收的分类167
' B1 z+ F% ?! ~0 A* Y* a" n# D5.2.4C++与垃圾回收169
% n: D6 M4 \0 G6 \& R5.2.5C++11与最小垃圾回收支持170
7 ~, V% ^; f0 ] H5.2.6垃圾回收的兼容性172
0 l+ e- |" S" n5.3本章小结1737 m/ E6 b( \/ P' }/ F
第6章提高性能及操作硬件的能力174
" ?( j! P2 J! |3 C6.1常量表达式174
3 S# x9 e( \ T7 V7 }6.1.1运行时常量性与编译时常量性174
8 @: H. ]) t2 M+ ?6.1.2常量表达式函数176+ e' g4 I5 i2 K: q1 ~
6.1.3常量表达式值178
6 H. o j7 ~3 D6 P5 k! `6.1.4常量表达式的其他应用180
! _' ~& _: }4 g/ h% m4 C6.2变长模板183% D* ]0 d! x! g4 w; {5 | ? S
6.2.1变长函数和变长的模板参数183% `* K3 Z/ Y" r+ [ l. g7 ]
6.2.2变长模板:模板参数包和函数参数包185+ ~& w7 n7 R j* a
6.2.3变长模板:进阶189
) h5 B g8 O6 B* o4 ~) U8 R8 V+ d6.3原子类型与原子操作196
& {. }% V7 x- P* T6.3.1并行编程、多线程与C++11196& A, M1 `; s; D0 O9 d/ f4 p$ g
6.3.2原子操作与C++11原子类型197
2 |( h8 M1 J4 m4 {% J+ E5 Y1 j" g8 i6.3.3内存模型,顺序一致性与memory_order203
4 L! @% s; T' |6.4线程局部存储214
7 d7 W5 Q8 z; I% Z3 L" M6.5快速退出:quick_exit与at_quick_exit216
/ { t: U' m( }6.6本章小结219. s6 ]5 @% S# }& _9 K, ?4 h! C
第7章为改变思考方式而改变220; ~ G7 A( R7 `$ k$ G: t# J
7.1指针空值—nullptr220
: {8 U) O9 f- x; U7.1.1指针空值:从0到NULL,再到nullptr2202 X# R2 @+ W1 b, z
7.1.2nullptr和nullptr_t223
7 ~/ m3 Z& {' @: u( Y6 t1 I7 D7.1.3一些关于nullptr规则的讨论225
: z o2 ~: Q5 o1 o2 z( H7.2默认函数的控制227
% R- ?1 }8 s' ^( Y+ y6 d7.2.1类与默认函数2276 m+ N# X( O$ U/ y6 ?: P% C4 h
7.2.2“=default”与“=deleted”230. J* j" f3 X5 k
7.3lambda函数2347 S) }/ D: K. i# S/ h
7.3.1lambda的一些历史234
! t: a( |8 Z' C. e7.3.2C++11中的lambda函数235! X3 U/ _! N" g7 k
7.3.3lambda与仿函数238
8 ~4 g5 G$ X/ f' U& K7.3.4lambda的基础使用240& t, [. o, L0 e8 n2 M7 Q0 K7 W
7.3.5关于lambda的一些问题及有趣的实验243' F5 Y' P; Q! d$ I' h# l
7.3.6lambda与STL247
- s5 d r/ `8 t2 P7.3.7更多的一些关于lambda的讨论254& H5 Z' i3 x; Z5 p" f
7.4本章小结256/ }% U# w9 v" G" m5 u- u
第8章融入实际应用258
5 y0 k, N- V9 V$ Z9 j8 S8.1对齐支持258% e# U& w- @+ }7 k, o9 H6 a
8.1.1数据对齐2588 V, C$ I) k3 r$ u" C, k/ Z
8.1.2C++11的alignof和alignas261
) c/ {2 Q% J' ]6 l/ E' q8.2通用属性267
- d# y. ^9 K' i' ]: w. E% m8.2.1语言扩展到通用属性267
8 {% u& R- b$ [! Z$ y( I8.2.2C++11的通用属性2689 p0 F1 I( v* J/ e* K' x) T9 c9 l
8.2.3预定义的通用属性270* x' v) y, `# y; V& m- d
8.3Unicode支持274, x% j0 K8 ?3 E2 t
8.3.1字符集、编码和Unicode274
. y1 z, n, S, w! H9 x8.3.2C++11中的Unicode支持276 K( F6 \! B5 c- W
8.3.3关于Unicode的库支持280
& N1 U. B1 q. Q6 Q" z3 g/ l# [1 b8.4原生字符串字面量284
. ^1 i0 r/ n' M, P, F8.5本章小结286
0 `0 w+ U5 n+ W8 P, e- U附录AC++11对其他标准的不兼容项目287
& @2 X5 |( \2 s$ W0 N0 B! `附录B弃用的特性294
' A9 f7 J3 c5 T/ ?% l1 }附录C编译器支持301
2 r6 }, S- J3 k4 F4 d* q( L$ ]' p附录D相关资源304
* M2 R4 n7 o: {& o2 }" A) ?3 H
* a! q: p7 P' H/ {: e+ i封面# O3 F1 z! `4 n1 S
& e" F9 Y Y% {% Y$ Q; M
) W, r {; x/ V2 H
截图
$ r3 }4 L' H0 c# W% f" L9 m: C b
/ K. m6 O& ]& Q6 h& a' z/ u. ?# W8 N$ y8 j# n, m
/ E# s$ a# x6 D8 z
. i, \3 C' V) o' U6 X |
zan
|