- 在线时间
- 686 小时
- 最后登录
- 2024-7-18
- 注册时间
- 2014-6-30
- 听众数
- 148
- 收听数
- 1
- 能力
- 1 分
- 体力
- 17803 点
- 威望
- 1 点
- 阅读权限
- 200
- 积分
- 5971
- 相册
- 1
- 日志
- 0
- 记录
- 4
- 帖子
- 1003
- 主题
- 377
- 精华
- 1
- 分享
- 0
- 好友
- 877
升级   19.42% TA的每日心情 | 奋斗 2016-7-14 13:54 |
|---|
签到天数: 219 天 [LV.7]常住居民III
 群组: 2015年美赛冲刺 群组: 高等数学串讲 群组: 2014第三期英语写作 群组: SAS数据分析大赛冲刺 群组: 2015美赛优秀论文解析 |
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑 8 ^# o0 P, s0 |! G* P3 [
8 o9 L: }$ @% {8 g
内容简介
% _. ]: I3 Y, s1 s( b《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。1 q6 [9 j, b# q
《深入理解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的相关资源。
; L, }0 ?/ x% {1 \6 X( D' F
1 i: v. Y, w1 P0 W2 [; L编辑推荐
9 g: a3 P1 N8 P7 s《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。7 v5 }+ y1 A; |& m# a2 g" D
2 H5 s/ h. e; N, S作者简介1 |& W8 H4 y+ x" o! d( {1 U
作者:(加拿大)Michael Wong IBM XL编译器中国开发团队
' g3 `4 a" u! l8 P$ V1 j- o8 g4 x6 w% m3 J
Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。8 p3 D8 ?! H' x, G" j' U6 }
Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。0 J t2 Z; D) [
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
* Q' o( S- ?$ _3 RIBM 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新特性的开发工作。
$ H+ }3 Q( s8 D7 L
: {8 f6 q _' e+ M {* j目录免责声明/ _4 y. F+ |) x3 S: ~+ g# h; j
序
# [) c; E: [1 V( \前言! {6 k9 K9 ~% B( M0 P0 x- `# U
第1章新标准的诞生1 a% i& x, w P1 ?2 l
1.1曙光:C++11标准的诞生1' J, h" _' V8 |
1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生19 M- [" ~! P: q2 h5 @
1.1.2什么是C++11/C++0x2
+ e% s' b; I3 V& U, l( m! H' x K1.1.3新C++语言的设计目标3
. S$ T. w, t; q$ L+ r1.2今时今日的C++5" N3 x: [. g+ o! A: B
1.2.1C++的江湖地位5; h ~4 P9 R+ H8 I. O( ~8 r5 E
1.2.2C++11语言变化的领域50 ~4 P* t+ d+ m( z# E, P$ s
1.3C++11特性的分类76 i6 w0 n L5 d+ g3 y
1.4C++特性一览11$ U2 H: Y& d5 {, t5 y& T$ J
1.4.1稳定性与兼容性之间的抉择117 }: M: y* l4 M0 p3 t
1.4.2更倾向于使用库而不是扩展语言来实现特性12
, n7 _/ t" f# b2 z6 q* W, y3 S- m1.4.3更倾向于通用的而不是特殊的手段来实现特性134 m. m; A) `/ K1 x# i4 n
1.4.4专家新手一概支持13
% v6 i, P. o* X: \1.4.5增强类型的安全性14
c4 Y* m% f' ]3 \ P! b' w2 A1 J' D1.4.6与硬件紧密合作14. X" `# F8 p- d1 I( R6 _8 ?
1.4.7开发能够改变人们思维方式的特性15
) f% I2 \4 X# I! ~1 q% t1.4.8融入编程现实164 z9 }0 L- Z0 G7 J& O4 n
1.5本书的约定17" L% f& [$ }2 q5 \6 i; g
1.5.1关于一些术语的翻译173 |4 w, }6 O, ~/ d- V0 V" m6 Z
1.5.2关于代码中的注释17/ g# K1 m- w6 j8 W6 M2 Z
1.5.3关于本书中的代码示例与实验平台18
7 w+ W7 Q* E' a% S+ W+ N0 q第2章保证稳定性和兼容性19
@1 `/ V/ Y- d+ R" D6 ?/ e" G2.1保持与C99兼容19. Q# @- n$ R6 A% S3 {
2.1.1预定义宏19
: E# f: y5 ]9 g A5 l' p0 e2.1.2_func_预定义标识符20
5 j( k5 J& b: g. M1 s5 r5 x9 e Q2.1.3_Pragma操作符226 I/ L. M' m- F2 K" K
2.1.4变长参数的宏定义以及_VA_ARGS_22
5 h+ u* m P4 v0 N2 A: W2.1.5宽窄字符串的连接23
# R$ @$ N. i' c8 S' T2.2longlong整型237 g4 l# O& \1 |- D$ @) u/ o
2.3扩展的整型257 b/ g2 H1 m2 p) x2 y
2.4宏_cplusplus26
( a7 y/ E/ G: b c1 F5 C/ C2.5静态断言276 k% R& z7 A* _ u z2 J
2.5.1断言:运行时与预处理时27! `5 V0 _# X2 z6 f4 S0 Y; `
2.5.2静态断言与static_assert28& L3 c$ W: ] |( e) }
2.6noexcept修饰符与noexcept操作符328 i# C/ N& n1 g1 M: S( N
2.7快速初始化成员变量36
% y7 W0 n! ~( j1 v2.8非静态成员的sizeof393 L/ {4 O9 K% b# i6 o& t1 o4 q3 u3 I
2.9扩展的friend语法409 g8 \" h. |$ u5 c- Z
2.10final/override控制44
/ j. A9 r3 C1 [1 W. j2 s/ P2.11模板函数的默认模板参数48
4 N8 D8 s9 C: P! T8 f2.12外部模板506 h4 D( n) i* ?
2.12.1为什么需要外部模板507 V0 W# R% b3 z3 ~7 F
2.12.2显式的实例化与外部模板的声明525 {7 f# L' m. h/ {' g
2.13局部和匿名类型作模板实参54 [5 r1 l x7 G9 k) u
2.14本章小结55
N, K' L( _. D. k第3章通用为本,专用为末572 \! d+ M h- }* m$ `0 ~
3.1继承构造函数57* @5 z* e4 \2 z. f- L2 T+ w4 I
3.2委派构造函数629 d4 J0 r$ N c; X7 \
3.3右值引用:移动语义和完美转发685 p0 K3 b" {. X- c) X9 Y
3.3.1指针成员与拷贝构造687 k- u4 J0 d n8 t$ d
3.3.2移动语义69
5 ^6 I2 o; ]% M. w. q" T7 ?3.3.3左值、右值与右值引用75, |; B' C" K, r
3.3.4std:move:强制转化为右值80) R% \% ^& m3 ^
3.3.5移动语义的一些其他问题82
1 u- c+ ~' ?3 E# E/ S& G8 L3.3.6完美转发850 [( I% e$ K7 Y: l) q, A4 A
3.4显式转换操作符89: s& o8 N/ ^ N
3.5列表初始化92
: }& R& o) l6 W/ M6 C3.5.1初始化列表92" ]1 F& L/ f8 [ y. }/ q# z
3.5.2防止类型收窄963 {! m, E' L; M0 P3 N6 r( p
3.6POD类型98
0 j) T" w" S. s r/ a1 F n3.7非受限联合体106
. y9 A& f; `& q+ O( G, ~+ w# \3.8用户自定义字面量110, s+ d# k. X+ q$ F6 l
3.9内联名字空间113
* @4 p8 l5 d, M. U' K3.10模板的别名118
( Z" {( A5 o" @; [5 |. e3.11一般化的SFINEA规则119
n8 o; L9 Q% k3.12本章小结121
8 G" }7 |9 s- E第4章新手易学,老兵易用123
! z. H/ [7 J% t4 h" w& j4.1右尖括号>的改进1237 x" [. c$ C( g& g: C+ l
4.2auto类型推导124; {' ~" c9 c& h8 V- X: Y3 B
4.2.1静态类型、动态类型与类型推导124
) ]$ C9 }7 N4 U9 U. k* }4.2.2auto的优势126& w! e; T: `2 w
4.2.3auto的使用细则1300 v4 A( o8 y0 O, k
4.3decltype134
- E6 B3 A$ {: _4.3.1typeid与decltype134
$ @, y$ G2 p' i! a! A: ?4.3.2decltype的应用136
$ a; r0 K8 J2 R# s: J) a4.3.3decltype推导四规则140! q# j; s- @# \
4.3.4cv限制符的继承与冗余的符号1433 { q$ {4 ^" ?% Q' h; h
4.4追踪返回类型1455 F# w! z& l# K: x$ `* t- j8 q- @' u+ I
4.4.1追踪返回类型的引入145
6 i: Z" |5 U6 D- Z3 t1 [4.4.2使用追踪返回类型的函数146
# A0 q z4 o2 P8 o9 q0 V; s2 p+ t4.5基于范围的for循环150
9 r5 V) a, I# C1 v4.6本章小结153
/ W" R4 b/ M: f! e5 D# \- l; |第5章提高类型安全155- J( H/ I' k; A
5.1强类型枚举155
: A8 _/ ]& J/ {0 B. a5 ?) X6 v- {5.1.1枚举:分门别类与数值的名字155
; b1 c( p- R! {4 n- w5.1.2有缺陷的枚举类型156# o4 F4 Q4 N; ^0 H
5.1.3强类型枚举以及C++11对原有枚举类型的扩展160/ c. _" ?$ H: `, _/ x6 ~' k8 q
5.2堆内存管理:智能指针与垃圾回收163
4 Z! G1 X' N6 J/ f( x5.2.1显式内存管理163
5 S3 A" U! D& u1 [# t5.2.2C++11的智能指针164
" v/ v0 C9 J5 g5.2.3垃圾回收的分类1676 V" z0 }5 s2 X( K! T( q
5.2.4C++与垃圾回收169
A; V7 V( l8 g- k6 {9 a5.2.5C++11与最小垃圾回收支持1707 T* @: v9 k: N
5.2.6垃圾回收的兼容性172- w5 E4 M' v/ V1 @
5.3本章小结173
( o$ f: a! ^ h第6章提高性能及操作硬件的能力174
! ~# p. n7 v. m( w" l6.1常量表达式174: n2 }% m1 c5 J
6.1.1运行时常量性与编译时常量性174- I0 f: C5 [% |- n3 {: Q9 w
6.1.2常量表达式函数176
0 _9 k3 @+ H" l, T2 C. D8 r6.1.3常量表达式值178
$ G6 ?2 U' C9 F: R$ l, b7 b* {4 D6.1.4常量表达式的其他应用180& }* e n( U5 K: s7 |$ |
6.2变长模板183
% m0 p# @8 {% W0 u. |; X# N6.2.1变长函数和变长的模板参数183" S. s' Z& C( y( _+ r" @. T
6.2.2变长模板:模板参数包和函数参数包185: P+ N4 f- J1 M' V% S1 ]. E" v
6.2.3变长模板:进阶1891 B u }' a; Y g9 e, s
6.3原子类型与原子操作196: s" v4 z2 Q/ ~8 x( _
6.3.1并行编程、多线程与C++11196/ z5 d+ B5 |9 c g9 q
6.3.2原子操作与C++11原子类型1970 A! Z! `$ M) a
6.3.3内存模型,顺序一致性与memory_order203
& s4 }+ `! @0 O: z& Y: |& ]6.4线程局部存储214
! d x9 o6 r$ O3 O6.5快速退出:quick_exit与at_quick_exit216' |% b4 Q" ^0 o6 U
6.6本章小结219
0 R' Y+ [" F8 q. h! V* C第7章为改变思考方式而改变220
0 M- ? H8 j& W7.1指针空值—nullptr220
! a% j" T4 b$ a7.1.1指针空值:从0到NULL,再到nullptr220& e5 O5 l: k2 \* M; B! j6 q# x; Q
7.1.2nullptr和nullptr_t223
- r/ }1 H( R' z! S; L! c) b, c7.1.3一些关于nullptr规则的讨论2255 H. d2 f W- z* y+ x" D
7.2默认函数的控制227" Z5 A% \! B% S% A* F# x2 y
7.2.1类与默认函数227% i! I2 z0 r! n9 b8 I
7.2.2“=default”与“=deleted”230" O& Z( q" u! Y( {& L7 W- M ]
7.3lambda函数234, V1 H; l3 D3 ]
7.3.1lambda的一些历史234
* M- y* p0 p9 o6 \: N% a. x6 |9 H7.3.2C++11中的lambda函数235( M" N c2 N1 f) W% G4 ]2 A
7.3.3lambda与仿函数238
9 a/ K7 W `7 {) j7.3.4lambda的基础使用240" p4 c/ s6 j/ n" U
7.3.5关于lambda的一些问题及有趣的实验243
9 X! I$ e5 k( m! ^( o7.3.6lambda与STL247
# B& N. s. Q% r. e5 j4 I7.3.7更多的一些关于lambda的讨论2548 a* G6 u& C% C5 x9 c* r
7.4本章小结256( V9 ]" i y$ J
第8章融入实际应用258
& ?+ K% a+ p- a4 ]8.1对齐支持258
|( g3 [% k/ k2 V0 {6 x8.1.1数据对齐258
' d% \/ P9 G- s8.1.2C++11的alignof和alignas261+ @+ [- q$ U3 i3 ` C' Q. G% ?
8.2通用属性2672 l- K) b: r% k H+ y9 q
8.2.1语言扩展到通用属性267- Q4 Z# f: q; b# ~
8.2.2C++11的通用属性2681 O- b3 o+ @' Y; i$ F# E F1 ^, o" f
8.2.3预定义的通用属性270
( K' s d1 l/ }4 e# \8.3Unicode支持274
, a, S* c% e4 p4 |! d/ C3 q4 A8.3.1字符集、编码和Unicode274: t- E& ]7 {% w, t
8.3.2C++11中的Unicode支持276# `$ }" t" M" S9 Q- g6 y
8.3.3关于Unicode的库支持280
& a4 t* T2 P8 e5 W/ h8.4原生字符串字面量284+ h* c1 @+ p8 D
8.5本章小结2865 p- Q* i/ I8 Z8 \
附录AC++11对其他标准的不兼容项目287
0 Q9 m+ r+ d2 l3 i. Y. Q( X附录B弃用的特性2942 z8 O0 U7 N& E& f9 m! g E* |4 o* F
附录C编译器支持301% `: O( a4 v6 v) v9 X8 X; h/ I4 |
附录D相关资源3042 \' K: T$ y; E' C
8 v& r# i- b D: t
- a# t, c- x& W/ s' \2 P封面
0 o9 `* l) K3 W
2 b% M2 g: X. n: }% p- j' i1 B& v4 q/ X
截图- B6 n7 W3 r$ f/ d% F8 J+ b1 Q
0 V( C- Q; c+ C8 K" B( n& K
6 T: v1 @% I6 H( L2 z' t u8 N: V- T2 ?8 k7 r- U0 [' T9 l
* w$ \3 O1 s7 U) { |
zan
|