数学建模社区-数学中国

标题: 深入理解C++11:C++11新特性解析与应用 [打印本页]

作者: 数学中国—罂粟    时间: 2014-7-25 10:30
标题: 深入理解C++11:C++11新特性解析与应用
本帖最后由 数学中国—罂粟 于 2014-7-25 10:31 编辑 , o% R/ J1 Z, E2 b& L2 R. N  l
1 A$ q/ A1 f7 w( J7 }2 u3 z# w
内容简介
' e0 O: B) {- @/ O. U深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
' ?  Q7 b9 w! \0 `. C- M深入理解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的相关资源。! I  N- I- S" x: U/ d" v

2 V! \# J1 W$ M- P+ S; {0 c% `编辑推荐
# r) Y/ ]+ C, j" |, ?( f3 b5 F3 X* w深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。
7 x6 s, v1 g9 b  ?) i; V, k4 f* N* Y. e  A8 Q! @
作者简介" K2 }1 f4 ^& h; h. o
作者:(加拿大)Michael Wong IBM XL编译器中国开发团队* B) e, u0 [5 E- p+ _+ s

1 K5 B" t  }7 t) ?4 uMichael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
# i) r! Y- M# x5 R. `Michael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。
% w# H* T$ T8 D: R) {早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
: h$ G4 z1 r: `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新特性的开发工作。0 W# X0 Q( X/ y( S7 A+ n1 q
* ~8 X; G4 ]* r" v" e4 Q
目录免责声明- L- f) {5 r, ^

% e; B# @  Y' E8 J# W! e/ g前言: N& T4 c6 K; }9 C9 J! f
第1章新标准的诞生1
8 |( ?2 }' [' E: }0 N1.1曙光:C++11标准的诞生1
* a2 X8 s, j0 E% |5 Y/ {1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生17 Y3 p  k5 j' R) n7 @
1.1.2什么是C++11/C++0x28 o" @7 y( t5 A3 |) e9 \: |
1.1.3新C++语言的设计目标34 c6 X$ f0 w; K5 d5 }2 N8 w& B5 B
1.2今时今日的C++5! P2 G2 Q6 ~. k+ L+ I" w
1.2.1C++的江湖地位55 ?  i% K4 ^" N4 p: X7 D  z
1.2.2C++11语言变化的领域5! |' e* c% }6 M; B! O+ W
1.3C++11特性的分类7
4 `7 b/ g7 q! j1.4C++特性一览11
) ?  V* n6 ?% n1.4.1稳定性与兼容性之间的抉择11/ {1 `# R% K0 r. F! N$ U
1.4.2更倾向于使用库而不是扩展语言来实现特性12
7 m0 O1 d$ ?: |- Z( ~1.4.3更倾向于通用的而不是特殊的手段来实现特性13, ^5 W( ~3 {$ ]* ^7 w8 l# n' T
1.4.4专家新手一概支持13, P  _( l& t4 c
1.4.5增强类型的安全性14+ `; f1 D, H1 ~+ M
1.4.6与硬件紧密合作14
$ \; Q2 W) Y- {% d% x+ g7 m1.4.7开发能够改变人们思维方式的特性15
/ d+ V+ e, O3 e( p% {& G9 N1.4.8融入编程现实16
, V6 e5 n, I3 b# O1.5本书的约定17
, g: x! _% \* c& i, K1.5.1关于一些术语的翻译17
- Q( O+ l- z/ C) P. o1.5.2关于代码中的注释17/ Z' |* ^4 D% V- b' N5 C
1.5.3关于本书中的代码示例与实验平台18
) c3 n% I+ ]" t5 Q第2章保证稳定性和兼容性19
8 a0 M/ U4 y; H2.1保持与C99兼容19% z. z% {% E* Z' t( L7 M/ m
2.1.1预定义宏194 m" ]% S% q& B3 W1 W( {/ \
2.1.2_func_预定义标识符20$ n8 |) F$ ~/ C
2.1.3_Pragma操作符22
6 }* E( E5 r7 S/ m& v: Q2.1.4变长参数的宏定义以及_VA_ARGS_227 _4 N2 M5 q7 e* o( e% P
2.1.5宽窄字符串的连接23
3 A2 u2 f2 P1 Y0 |5 r* `2.2longlong整型231 M( B" u1 Y6 c. Q- Q- S- v
2.3扩展的整型250 T2 o5 ]- ]& e- t' @
2.4宏_cplusplus266 q3 H, y1 W2 V
2.5静态断言274 f: y5 K! r2 F6 H: g0 `
2.5.1断言:运行时与预处理时27( O3 L6 f4 v+ ^8 }8 X
2.5.2静态断言与static_assert28. q7 Q- @( \8 L1 r$ S+ W8 v# B
2.6noexcept修饰符与noexcept操作符32
. d( R( F  J6 E1 W! g# Y9 K2.7快速初始化成员变量36
8 o$ Z6 t4 z0 L1 O/ ?- s4 m2.8非静态成员的sizeof393 p) Z7 b/ i: K1 A5 M4 D
2.9扩展的friend语法409 a, t7 d1 `$ h" N
2.10final/override控制44  V; P# `& y: S1 L, D9 U# j
2.11模板函数的默认模板参数48
6 `; T; q( b- U" ~: G# o- m2.12外部模板50
. [; d5 H3 ], }  J* y, D/ ?# H( p2.12.1为什么需要外部模板50( ?5 E: e: H3 k; Y3 \2 Q* t
2.12.2显式的实例化与外部模板的声明527 B( Y- A' w, B, v. T  A" r+ E1 B
2.13局部和匿名类型作模板实参54
5 b3 L% D% Y6 I" f2.14本章小结55
+ y5 m) O8 R8 i( Y: a+ w第3章通用为本,专用为末572 C7 Z- q+ N0 C" @
3.1继承构造函数571 A* ~5 h4 c  \+ T
3.2委派构造函数62* b4 d; Y; V7 u7 o! M9 h
3.3右值引用:移动语义和完美转发68
) t# f5 ]2 W8 L9 Z- ^  y5 S+ K3 |+ z3.3.1指针成员与拷贝构造68/ H$ E7 |) }" N3 t
3.3.2移动语义69
. D3 `: S( r- m  T, ~8 e3.3.3左值、右值与右值引用75
3 n8 C! s0 `, r4 l3.3.4std:move:强制转化为右值80
7 H, R$ [' N/ G5 \* h) ]3.3.5移动语义的一些其他问题82. y0 w$ v1 O% w0 ?
3.3.6完美转发85
. i/ {' h- _4 M5 X4 |+ L" G; Z+ p3.4显式转换操作符89
  p9 l: O. i$ S* a4 W, v) I3.5列表初始化92
8 T/ K! _* l/ Q( Y3.5.1初始化列表92% q8 ^3 e# w# v
3.5.2防止类型收窄96
- W" k1 i3 K) B7 J8 z3.6POD类型98
+ f; U# K) W& d& }- Q3.7非受限联合体106& J+ Q8 v: r/ I' f7 }
3.8用户自定义字面量110
: S4 w0 Y5 n  N8 j3.9内联名字空间113
& |, E1 V. Q1 p- }' B3.10模板的别名118
1 ?3 w" M6 v4 m# f( T3.11一般化的SFINEA规则119
7 B5 b% n! q6 R) S4 u$ @3.12本章小结121! ^' Y8 p0 \! i
第4章新手易学,老兵易用123
$ `3 R2 S/ C$ x3 k$ X3 a  g# m4.1右尖括号>的改进1233 |. Q2 P4 b5 p0 z
4.2auto类型推导124
- |6 c% F" Y) R# d# n' ~# N* U: k4.2.1静态类型、动态类型与类型推导124
8 X3 W. _2 T$ q* X4.2.2auto的优势1263 C9 X2 e6 c5 H4 X: e& H2 N
4.2.3auto的使用细则130# r0 Q6 ]5 b$ y3 [% j4 m
4.3decltype134
' U* Q6 q6 [- K1 N4.3.1typeid与decltype1344 E" z8 n. L, c4 y  h: c- t& F: c
4.3.2decltype的应用136, L- q! P3 H/ T6 O8 F4 |
4.3.3decltype推导四规则140
& U8 l! T2 s& M4 k+ T4.3.4cv限制符的继承与冗余的符号143' O# a1 q) A. C: A3 @* P
4.4追踪返回类型145/ A1 D0 K# S3 Y: m8 p3 b" [9 f
4.4.1追踪返回类型的引入1451 H! \0 E: I9 O+ D
4.4.2使用追踪返回类型的函数146$ M( r+ O* u2 S1 D
4.5基于范围的for循环1505 R& e6 @( L; w2 j9 M& Q9 m
4.6本章小结1536 d" W) e& ^* [% |9 |( Z. y
第5章提高类型安全155
" u: z5 L6 N+ Q5.1强类型枚举155
# n& P' q$ f0 U* j5.1.1枚举:分门别类与数值的名字1550 S3 f4 ^! Z% _$ b: s5 S, t# Z
5.1.2有缺陷的枚举类型156
( I! B' H) f1 Z5.1.3强类型枚举以及C++11对原有枚举类型的扩展1608 h' G% ^+ {1 b
5.2堆内存管理:智能指针与垃圾回收163
3 K/ h% Y8 I: l+ t1 H1 }4 [# G' d5.2.1显式内存管理1634 y+ t! p- H( S# ]! |
5.2.2C++11的智能指针164& L+ T6 M( Q# Y6 a. c3 T8 K
5.2.3垃圾回收的分类167$ E9 u- d2 u5 e+ E
5.2.4C++与垃圾回收1691 Y- u, o; y3 E2 x3 h0 K7 Z9 n
5.2.5C++11与最小垃圾回收支持170, P9 n, l8 P# m" L4 G
5.2.6垃圾回收的兼容性172
: I- J8 l8 S! Q1 I; Z) J  y5 H9 t5.3本章小结173' C% w5 z& a1 O8 f; I
第6章提高性能及操作硬件的能力174
. |9 ?& Q. {6 n+ h" \2 G) k) N& ~6.1常量表达式174
/ `& \5 @$ b- \/ W$ y6.1.1运行时常量性与编译时常量性174. o4 ?1 P, u  I9 W0 Q! p0 E
6.1.2常量表达式函数176
9 U! z% `, t1 ]6.1.3常量表达式值1782 F. ?4 S: d8 o2 `
6.1.4常量表达式的其他应用1805 D8 W4 n+ u0 }$ l% _4 I: X
6.2变长模板183% R/ a1 }$ N8 a* P" Q# r4 e) Z. f9 z* _
6.2.1变长函数和变长的模板参数183
5 b) T/ w5 E( w  Q6.2.2变长模板:模板参数包和函数参数包185" T* c- C6 _1 N, [! C& F3 R0 O
6.2.3变长模板:进阶189
4 v+ M# C: B4 E: O0 A. w6.3原子类型与原子操作196& z, [4 |# @! u) _* [
6.3.1并行编程、多线程与C++11196- i7 E- P. L! y7 |
6.3.2原子操作与C++11原子类型197
8 p7 f* P7 g# F2 d6 ~0 i$ c: I6.3.3内存模型,顺序一致性与memory_order203
4 |9 U3 x0 ?; \6.4线程局部存储2141 K# v- U' e5 x
6.5快速退出:quick_exit与at_quick_exit216
9 \+ v# u! i) |6.6本章小结219, `7 T% u9 p/ w1 w
第7章为改变思考方式而改变220+ C% T6 M# I  H, h3 u& W
7.1指针空值—nullptr2200 i/ \* I9 S* n; Q
7.1.1指针空值:从0到NULL,再到nullptr2204 i: \0 b( l) ~! L; u# h4 f- ~
7.1.2nullptr和nullptr_t223
, X8 u% |8 ?7 |$ Y/ ]6 J7.1.3一些关于nullptr规则的讨论225! v6 }3 w& u9 Y% f* j, x' G6 E
7.2默认函数的控制227
! d5 ?( j& Z4 G5 j7.2.1类与默认函数227
) A& j, A0 T7 V" }7 K7.2.2“=default”与“=deleted”2308 ?3 T7 r. Z7 F
7.3lambda函数234
$ p2 G$ p4 w- ]! q: A7.3.1lambda的一些历史234
7 y& H! {  @! G' x' C' B7.3.2C++11中的lambda函数235
% G" v% T% H( Y# I( e7.3.3lambda与仿函数238
7 \' D3 e( o5 Y4 {/ W5 L7.3.4lambda的基础使用240
) g# S- L- v$ ?$ X; W  ^( v+ H7.3.5关于lambda的一些问题及有趣的实验243
; A' |  |  {& W7.3.6lambda与STL247
) o3 }- C3 X- h: a0 ^. R7.3.7更多的一些关于lambda的讨论254
/ T# Z- X/ A( y  K" h7 H" A7.4本章小结2562 ]# L- Z6 ]; Q' g8 Q8 C
第8章融入实际应用258
0 ~8 [+ z6 |9 ?& J# s- j# l8.1对齐支持258
* M. v2 L+ n2 F/ g2 j/ E) t  X8.1.1数据对齐258
* L, G$ ~% u7 t: o" `* ?8.1.2C++11的alignof和alignas261
0 i, v( x5 N6 ^2 h1 Q, [( v8.2通用属性2674 f3 T0 c, H$ B- e
8.2.1语言扩展到通用属性267
# O; Z. j& }1 {& r: t9 @8.2.2C++11的通用属性268
* K% ?; o- d9 |+ j8.2.3预定义的通用属性270& z3 x$ D* O0 F1 k) m7 V1 }' v
8.3Unicode支持274
" S3 Q/ g# ^  C! r2 b: V  G0 H8.3.1字符集、编码和Unicode274. c6 J; d2 U& B0 C; z# h
8.3.2C++11中的Unicode支持276: e4 o2 ^+ ?. b; e  i; r; B# [
8.3.3关于Unicode的库支持280
( w9 [3 O$ y$ W* f; [8.4原生字符串字面量284
  ^" E+ f" o  H! L9 Z8.5本章小结286  G( e( |. y& E* [
附录AC++11对其他标准的不兼容项目2875 F0 V. |9 Q4 _& r8 E
附录B弃用的特性2949 t# O# }" l% s% }) R; H
附录C编译器支持3014 Y  G8 W' i# k% F
附录D相关资源304
2 Q* _4 X8 x* ]) R3 v0 @3 m

9 z+ k9 t7 g$ |* K& X( f, ~& q3 I) r
- @& c- `8 x  B. F4 S* m# H封面: }1 a- U  N2 y9 a9 c% l
1.jpg
+ t  [* q: R6 q) ]2 K
, t8 E! P  F: _& B截图
) ]8 T5 j" ~- U0 C* X 2.jpg 6 g8 m' ]" y( u* F$ T
3 W  t! _% I  T8 `* r
( a6 ~1 O# P6 ?' h5 {1 |% Y
% t. `$ _1 q+ @/ l' I( D& L

作者: 叶小伦    时间: 2014-7-25 22:06
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: ッ坚守那仅存    时间: 2014-7-31 10:09
顶!!!!!!!!!!!!
作者: 木头风火轮    时间: 2014-7-31 10:26
赞一个  学习学习,
作者: 模天大楼    时间: 2014-8-1 21:59
顶啊。。。。。。。。。。。。。。。。。
作者: drrile    时间: 2014-8-2 11:40
学习学习..
作者: drrile    时间: 2014-8-2 11:40
学习学习..
作者: 风树    时间: 2014-8-9 17:00
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: silence123    时间: 2015-1-6 12:42
WOXIANGkankan
0 w2 C. l7 N: p  X
作者: gancm    时间: 2015-1-6 17:17
看看。。。。。。。。。8 S8 o, j3 }+ }4 T- D% }) r, _) v3 y  B$ ~

作者: 慢跑20    时间: 2015-1-21 12:03
不错,长盛不衰的语言
, b' X6 U& ?* M
作者: zszzsz111    时间: 2015-2-1 22:25
不错的,谢谢楼主分享~
0 P$ T% ~7 b; H
作者: jiangtai    时间: 2015-2-3 14:11
挺不错的,支持一下
8 u" x- d8 Z) y$ ?9 t
作者: jiay    时间: 2015-2-3 14:30
good..............4 n- R* O. I9 T1 S9 v

作者: LYJA    时间: 2016-9-4 13:04
It is so good,thank you very much!  X, A! j, T7 k& m3 f





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5