- 在线时间
- 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 编辑
. o6 ]5 ]$ h! P1 B8 ~1 l9 @3 e
" {9 |: J3 p' K; F$ ]4 {* L/ u内容简介4 h# I# H, {/ x2 `
《深入理解C++11:C++11新特性解析与应用》内容简介:国内首本全面深入解读C++11新标准的专著,由C++标准委员会代表和IBM XL编译器中国开发团队共同撰写。不仅详细阐述了C++11标准的设计原则,而且系统地讲解了C++11新标准中的所有新语言特性、新标准库特性、对原有特性的改进,以及如何应用所有这些新特性。
7 d( @& q, ~+ u9 T0 ~9 f& C3 l( T j《深入理解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的相关资源。
1 {6 k. s$ I! C: l# S, h4 J( m& g2 T# B) @9 o: b" W, `* | M
编辑推荐
- _' f# H! J0 v, [" ^《深入理解C++11:C++11新特性解析与应用》编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑。系统、深入、详尽地讲解了C++11新标准中的新语言特性、新标准库特性、对原有特性的改进,以及所有这些新特性的应用。
3 P" K: ~& Y' j- T0 x, B- J/ b# K
! ]0 Y/ s7 k4 o% O0 q* `作者简介
' [; ~( T0 B$ w8 F- s9 ?$ |( c d作者:(加拿大)Michael Wong IBM XL编译器中国开发团队; q' k' N6 r6 Z+ M
/ p8 Z( t4 [) ~( p" _- h# |Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),WG21 SG5(transactional Memory study group)学习小组组长。除此之外,Michael还是OpenMP委员会的CEO,SCC(Standards Council of Canada)的副主席。
- t0 I9 N8 d/ L3 |# b3 WMichael是多个C++11/OpenMP/STM新特性的合作编写者,活跃于各种技术会议,而且为Programming Committee of Boost以及IWOMP等国际会议服务。Michael也是IBM公司的高级技术专家,领导IBM XL C++编译器、XL C编译器的开发工作,当前致力于IBM编译器的C++11新特性部署。Michael在并行编程、C++基准测试、对象模型、泛型编程、模板元编程等多个技术领域均有涉猎,并且在对象模型以及事务内存等方面取得过多个专利。9 N1 a6 ~! V. H% x! R
早年Michael于多伦多大学获取得了天体物理学的学士学位,并在滑铁卢大学获得了硕士学位。在加入IBM之前,Michael曾先后供职于大卫?邓禄普天文台(David Dunlap Observatory),CDC公司(Control Data Corporation),BMO Nesbitt Burns公司等。
U7 t$ S3 l% H* r1 SIBM 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新特性的开发工作。% ~2 L' U9 h) J2 F" j9 i4 H
; }7 n/ L# e# U, G6 @, \: ~目录免责声明
: ?2 ^' h% [5 t. R( F' `序5 h1 z( O* f. N* J8 }% @4 Z! Y: m1 M
前言+ `4 K& S4 A: h
第1章新标准的诞生1
D( k, z7 X% {2 I2 K' T1.1曙光:C++11标准的诞生1
& u& q; x$ _* {1.1.1C++11/C++0x(以及C11/C1x)——新标准诞生1/ o* ?+ t C$ M# [
1.1.2什么是C++11/C++0x2' F. F2 H4 s4 P) i! U% D5 A
1.1.3新C++语言的设计目标3
& O+ x9 |7 d9 M" C1.2今时今日的C++5
8 |4 [8 v: o# }1 a. v1.2.1C++的江湖地位5' S' B6 z: \$ A1 m0 m2 f# p) g
1.2.2C++11语言变化的领域5( k, _5 p) Q8 R. W
1.3C++11特性的分类7
3 S, X' E/ B7 u6 K m0 {& J k1.4C++特性一览11
$ b& ^. I! O) ?* C5 F% e1.4.1稳定性与兼容性之间的抉择11& |/ n+ g- E7 ^; r% h
1.4.2更倾向于使用库而不是扩展语言来实现特性12
; b8 }& a& W. z" K6 b$ \; {0 h1.4.3更倾向于通用的而不是特殊的手段来实现特性13 R, c/ N/ w6 U. w7 ?4 [
1.4.4专家新手一概支持13
, X' S, V2 I v) z5 p1.4.5增强类型的安全性14: a; U- z) o! A7 m4 F
1.4.6与硬件紧密合作147 T+ L: x1 W& q5 {% z
1.4.7开发能够改变人们思维方式的特性154 G9 \6 F2 p! e t) f: v0 h
1.4.8融入编程现实16
& `& `5 o" L7 {; ~. U9 O1.5本书的约定174 k/ Q& A% Z7 q, |* z
1.5.1关于一些术语的翻译17
! Q7 R+ l ^7 r7 u1.5.2关于代码中的注释17) q' w- k9 U( H5 n
1.5.3关于本书中的代码示例与实验平台18' T, F, g. m- f1 }, W' [- f2 p. t
第2章保证稳定性和兼容性19
0 e% h1 L1 E7 M r+ j, e6 b$ K& }2.1保持与C99兼容190 W! \: P8 |+ O |
2.1.1预定义宏19
; f% b4 U4 V- N: n" c# N2 \2.1.2_func_预定义标识符20
" f& T0 {9 I+ ~2.1.3_Pragma操作符22& |2 M! H9 H7 o$ n* ^6 t
2.1.4变长参数的宏定义以及_VA_ARGS_22$ K( w6 V, |6 r7 r3 A# v9 o5 x8 C ?
2.1.5宽窄字符串的连接23
4 S2 @' @/ Z' r! a2.2longlong整型23% k6 W2 F, T9 J: Q0 ]3 z
2.3扩展的整型25* e3 Y" b7 w: V c+ q
2.4宏_cplusplus26! f, \# O+ }' ~( V4 P9 l$ G
2.5静态断言274 D; o* \* F5 b$ J: x6 \7 |5 e |
2.5.1断言:运行时与预处理时271 c/ c2 V! ~7 M
2.5.2静态断言与static_assert28
}7 Z: j$ f( ?2 y, {2.6noexcept修饰符与noexcept操作符32* m2 S; c! Z6 e: |! A; o
2.7快速初始化成员变量364 {1 W) p. [) S. j: w
2.8非静态成员的sizeof393 S% P# \# f9 g1 r
2.9扩展的friend语法40 w+ ^) Z/ l( G3 U
2.10final/override控制443 P' v( L {# a: `% \
2.11模板函数的默认模板参数48
- o6 i7 |! [/ s2.12外部模板50# k O$ _- l$ T6 D' w2 [, ?- `8 S
2.12.1为什么需要外部模板50
; Q3 ?. h2 T9 p2.12.2显式的实例化与外部模板的声明52. l _8 B0 r) W" E& b: @
2.13局部和匿名类型作模板实参54
: {- ^) h" g! n" \' T; [+ E2.14本章小结559 \1 K( ^! z+ W* S2 D: n! g& n, x
第3章通用为本,专用为末57
, O1 w1 H* f! q9 H! z* \3.1继承构造函数57
8 J" s. q6 c. ^3.2委派构造函数62
# |/ }! M: H! _6 h3.3右值引用:移动语义和完美转发68
' F# e8 R5 P. Z$ O J4 u9 f3.3.1指针成员与拷贝构造68# ]* d0 I6 U) Q# k
3.3.2移动语义69$ [" X% t3 G" d' b; Z7 P
3.3.3左值、右值与右值引用75
$ b6 i C h9 r' D% t# g: X2 v m3.3.4std:move:强制转化为右值80
" [3 u+ W# e6 j3.3.5移动语义的一些其他问题82 s: e; p( m6 K
3.3.6完美转发851 i0 x) t4 C1 C6 h1 w3 D3 `1 r
3.4显式转换操作符89
. Q) L0 n% O: O! z3.5列表初始化92
3 ^- n" p$ y5 |% y7 I3.5.1初始化列表92& b8 @9 [$ q8 V+ w
3.5.2防止类型收窄962 i N5 F" N- z# p$ j; p
3.6POD类型98
4 j6 c2 l, E) E" g6 b3.7非受限联合体106
* ]0 v, X3 G1 T3.8用户自定义字面量110
$ i1 S" \/ N8 n3 B! o3.9内联名字空间113
% U- ]" W: \6 z- Z3.10模板的别名1181 v/ D3 d; H6 x# z
3.11一般化的SFINEA规则1195 O. O) e6 g- a; A* _1 D$ \
3.12本章小结121 Q; y; d/ J# E( J
第4章新手易学,老兵易用123
1 X# N" B: R: E& o4.1右尖括号>的改进123" Z) M5 @" n4 C
4.2auto类型推导124; A& s0 x$ H3 A+ M$ |$ e
4.2.1静态类型、动态类型与类型推导1242 ~: q# n- j4 z2 }1 v4 [' B8 D
4.2.2auto的优势126
# h- B5 T9 s( a7 H! G. Q5 S( ^4.2.3auto的使用细则130, n, ^. Y6 B' [0 M# X \
4.3decltype134! ~* B' N2 F4 _& H% c* D- R
4.3.1typeid与decltype134
% J) |; {. p% ?. Y7 B4.3.2decltype的应用136& ~# M/ D/ r+ y: t- O
4.3.3decltype推导四规则1404 x4 I( C' S3 L. X6 i* C
4.3.4cv限制符的继承与冗余的符号143
, I# k: a z& |3 M4.4追踪返回类型145
2 S7 V6 A* k9 _4.4.1追踪返回类型的引入145( s0 e- c# R8 l6 S K) F
4.4.2使用追踪返回类型的函数146
& D8 c$ T4 b% I* C; i9 e3 x4.5基于范围的for循环1504 W& V4 M) N( o( v/ {
4.6本章小结153
6 T. }0 N+ }' W5 j7 N第5章提高类型安全155
0 V k# j( q; J' }: b5.1强类型枚举1556 n4 u( V. u2 g3 \! O
5.1.1枚举:分门别类与数值的名字1555 u% j1 ]0 c' r$ w
5.1.2有缺陷的枚举类型1560 [5 Q/ c0 g7 f+ R# V0 ~& e! M8 e0 [
5.1.3强类型枚举以及C++11对原有枚举类型的扩展160) e! G+ n2 K5 E
5.2堆内存管理:智能指针与垃圾回收163
: k" K4 F+ _/ U$ ]! B7 E5.2.1显式内存管理163# I+ d8 v ~0 v7 Q6 i& d4 {$ k
5.2.2C++11的智能指针164
( a7 @6 V* O" c- m8 @: O- e0 \5.2.3垃圾回收的分类167
& u) J p3 V# ?$ T* U. \% k# ?- j5.2.4C++与垃圾回收169* n( b* c2 l" i( b1 J- G
5.2.5C++11与最小垃圾回收支持170
\ v r. ^3 y8 Q5.2.6垃圾回收的兼容性1726 A) Y$ q( K& P: l( Q
5.3本章小结173
, x) q% f% b/ n: y! x第6章提高性能及操作硬件的能力174
* r/ `6 z% E! v& T( T2 N6.1常量表达式174
4 p, s: l" I* {- Q$ T1 \6.1.1运行时常量性与编译时常量性174+ o3 @6 S$ B& ~/ r5 Q- l8 o0 @
6.1.2常量表达式函数1762 J( g$ I4 r$ H. G( m) f7 r j
6.1.3常量表达式值178& v( ]2 v9 i3 R
6.1.4常量表达式的其他应用180+ k6 W" A6 _" m" ^; q4 E6 @. H9 W
6.2变长模板183% L7 y0 Q8 p9 r0 A. b
6.2.1变长函数和变长的模板参数183/ S, Y I1 D4 C- S, W( i% X7 p
6.2.2变长模板:模板参数包和函数参数包185
% g8 q/ V3 v. d' `0 [6.2.3变长模板:进阶189
( q. {/ V2 f8 z7 m6.3原子类型与原子操作196) S. A, i) o) ?: s& u3 ~
6.3.1并行编程、多线程与C++11196
- [- y, e9 a0 Y9 S, b1 y6.3.2原子操作与C++11原子类型197
" o0 e/ q$ T5 }7 Y5 @2 ?" L6 n6.3.3内存模型,顺序一致性与memory_order203
$ g/ B+ E- U2 Q+ ]6 a6.4线程局部存储2147 _9 j1 | v. d2 X8 x E4 R. Q
6.5快速退出:quick_exit与at_quick_exit2169 f+ n, X$ I0 ^0 s; }6 O
6.6本章小结219
6 u6 {0 ?5 Z/ c W$ y第7章为改变思考方式而改变220& S4 }( r, I# Q* k
7.1指针空值—nullptr220/ b; j# H4 @' H0 p4 o
7.1.1指针空值:从0到NULL,再到nullptr220, ~" F' s9 b% R) K/ G" K* p( B
7.1.2nullptr和nullptr_t223: S; A3 s, B. f: P
7.1.3一些关于nullptr规则的讨论225
6 i' o/ G6 v/ D# ~9 j' j7.2默认函数的控制227$ {9 f7 D1 v; y
7.2.1类与默认函数227' I9 g7 L3 @; v" M2 a& Y
7.2.2“=default”与“=deleted”230" ~( D8 a! `- L' B, S0 h! z n. U7 {
7.3lambda函数234
6 L" [5 Q3 K2 E6 x3 ]) K1 N7.3.1lambda的一些历史234% O$ y& H/ T. c1 m* M
7.3.2C++11中的lambda函数235* f0 u* Q. J! B) ], Z
7.3.3lambda与仿函数238
. i1 [( {: D! Y7.3.4lambda的基础使用2403 ]$ m5 G9 W7 D8 L
7.3.5关于lambda的一些问题及有趣的实验243
4 O3 }5 `% | p0 f. e7.3.6lambda与STL247
6 ^. \0 g2 h: r& N9 \) x+ H* ?7.3.7更多的一些关于lambda的讨论254
, i7 }$ C" g) B5 S* W9 ?7.4本章小结256( V& y3 C4 S! p" w
第8章融入实际应用258
$ Z: z# {/ E* s4 }2 O7 q# `8.1对齐支持258) v) W$ C! g, d0 T# n ]# d
8.1.1数据对齐258/ U; A. K9 J4 o, H5 U: v) e" B/ u
8.1.2C++11的alignof和alignas261
" ]/ ~1 X$ ^6 i8 \8.2通用属性267- d [+ J& d0 z. \' P$ C' |
8.2.1语言扩展到通用属性267
3 \' F B6 D8 s+ l+ x# d8.2.2C++11的通用属性2688 @: X8 f! ]$ Z
8.2.3预定义的通用属性270* f6 {- Q0 w8 ?! \! k, K
8.3Unicode支持274' C& H+ p7 o$ m4 I+ v( N8 j2 o
8.3.1字符集、编码和Unicode274
3 _: ?8 R( a1 M# K$ F6 ~8.3.2C++11中的Unicode支持276- y: Q4 v" K% X m0 n C0 Y
8.3.3关于Unicode的库支持280- [ O/ H" |1 y/ \
8.4原生字符串字面量284- w1 G& P. t+ U2 A" U
8.5本章小结286
1 D3 I( e! t( _9 K' A; U! h; P附录AC++11对其他标准的不兼容项目287
3 Q7 X& ^% W8 ]3 H5 ^& m附录B弃用的特性294
3 T* @4 J9 P$ v) |, L0 V$ [附录C编译器支持3010 ]$ T) u2 E3 |0 A; n7 P
附录D相关资源304
9 ?8 `" w$ b" y* V) {: B( v( ]! c) ^1 E; @# N( k( o
2 R3 {9 s( S* O% G# @! i9 F' H, l
封面: N+ h( q0 p/ {+ `2 n! K
3 q. H v& L2 ]# j7 W' X
' V% e k' c& L: ^' f
截图) x( H4 E) T' ]( `& @
# p% `+ ?% D+ x y/ Z/ n0 z& r% u; t
- u- M+ ^+ o5 r! v& ^/ v* w0 ^* H/ Y2 D9 ?, W: ?3 _2 e8 @
/ ^5 q/ C8 X+ S
|
zan
|