8
8
9
9
10
10
< link rel ="shortcut icon " href ="img/favicon.ico ">
11
- < title > 小彭老师现代 C++ 大典 - ✝️小彭大典✝️</ title >
11
+ < title > 前言 - ✝️小彭大典✝️</ title >
12
12
< link href ="css/bootstrap.min.css " rel ="stylesheet ">
13
13
< link href ="css/fontawesome.min.css " rel ="stylesheet ">
14
14
< link href ="css/brands.min.css " rel ="stylesheet ">
47
47
< ul class ="dropdown-menu ">
48
48
49
49
< li >
50
- < a href =". " class ="dropdown-item active " aria-current ="page "> 小彭老师现代 C++ 大典 </ a >
50
+ < a href =". " class ="dropdown-item active " aria-current ="page "> 前言 </ a >
51
51
</ li >
52
52
53
53
< li >
119
119
120
120
< li class ="nav-item " data-bs-level ="1 "> < a href ="#c " class ="nav-link "> 小彭老师现代 C++ 大典</ a >
121
121
< ul class ="nav flex-column ">
122
+ < li class ="nav-item " data-bs-level ="2 "> < a href ="#_1 " class ="nav-link "> 前言</ a >
123
+ < ul class ="nav flex-column ">
122
124
</ ul >
123
125
</ li >
124
-
125
- < li class ="nav-item " data-bs-level ="1 "> < a href ="#_1 " class ="nav-link "> 前言</ a >
126
- < ul class ="nav flex-column ">
127
126
< li class ="nav-item " data-bs-level ="2 "> < a href ="#_2 " class ="nav-link "> 格式约定</ a >
128
127
< ul class ="nav flex-column ">
129
128
</ ul >
146
145
< h1 id ="c "> 小彭老师现代 C++ 大典</ h1 >
147
146
< p > 小彭大典是一本关于现代 C++ 编程的权威指南,它涵盖了从基础知识到高级技巧的内容,适合初学者和有经验的程序员阅读。本书由小彭老师亲自编写,通过简单易懂的语言和丰富的示例,帮助读者快速掌握 C++ 的核心概念,并学会如何运用它们来解决实际问题。</ p >
148
147
< blockquote >
149
- < p > < img src =".. /img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 敢承诺:土木老哥也能看懂!</ p >
148
+ < p > < img src ="./img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 敢承诺:土木老哥也能看懂!</ p >
150
149
</ blockquote >
151
- < h1 id ="_1 "> 前言</ h1 >
150
+ < h2 id ="_1 "> 前言</ h2 >
152
151
< p > 推荐用手机或平板< strong > 竖屏</ strong > 观看,可以在床或沙发上躺着。</ p >
153
152
< p > 用电脑看的话,可以按 < code > WIN + ←</ code > ,把本书的浏览器窗口放在屏幕左侧,右侧是你的 IDE。一边看一边自己动手做实验。</ p >
154
153
< p > < img alt ="" src ="img/slide.jpg " /> </ p >
155
154
< blockquote >
156
- < p > < img src =".. /img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 请坐和放宽。</ p >
155
+ < p > < img src ="./img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 请坐和放宽。</ p >
157
156
</ blockquote >
158
157
< p > 可以按顺序阅读,也可以在本页面上方导航栏的“章节列表”中,选择感兴趣的章节阅读。</ p >
159
158
< p > 本书完全开源和免费,GitHub 仓库:https://github.com/parallel101/cppguidebook</ p >
@@ -163,11 +162,11 @@ <h1 id="_1">前言</h1>
163
162
< p > 如果你在阅读过程中遇到任何问题,可以在 < a href ="https://github.com/parallel101/cppguidebook/issues "> GitHub Issues</ a > 中提出,小彭老师会尽力解答。</ p >
164
163
< h2 id ="_2 "> 格式约定</ h2 >
165
164
< blockquote >
166
- < p > < img src =".. /img/bulb.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的内容是温馨提示</ p >
167
- < p > < img src =".. /img/warning.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的内容是可能犯错的警告</ p >
168
- < p > < img src =".. /img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的内容是笑话或趣味寓言故事</ p >
169
- < p > < img src =".. /img/book.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色书写的是补充说明的课外阅读,看不懂也没关系</ p >
170
- < p > < img src =".. /img/question.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的是初学者可暂时不用理解的细节</ p >
165
+ < p > < img src ="./img/bulb.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的内容是温馨提示</ p >
166
+ < p > < img src ="./img/warning.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的内容是可能犯错的警告</ p >
167
+ < p > < img src ="./img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的内容是笑话或趣味寓言故事</ p >
168
+ < p > < img src ="./img/book.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色书写的是补充说明的课外阅读,看不懂也没关系</ p >
169
+ < p > < img src ="./img/question.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 用这种颜色字体书写的是初学者可暂时不用理解的细节</ p >
171
170
</ blockquote >
172
171
< ul >
173
172
< li > 术语名称: 这里是术语的定义。</ li >
@@ -178,23 +177,23 @@ <h2 id="_3">观前须知</h2>
178
177
< p > 很多同学想当然地误以为 C++98 最简单,哼哧哼哧费老大劲从 C++98 开始学,才是错误的。</ p >
179
178
< p > 为了应付缺胳膊少腿的 C++98,人们发明了各种< strong > 繁琐无谓</ strong > 的写法,在现代 C++ 中,早就已经被更< strong > 简洁直观</ strong > 的写法替代了。</ p >
180
179
< blockquote >
181
- < p > < img src =".. /img/book.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 例如所谓的 safe-bool idiom,写起来又臭又长,C++11 引入一个 < code > explicit</ code > 关键字直接就秒了。结果还有一批劳保教材大吹特吹 safe-bool idiom,吹得好像是个什么高大上的设计模式一样,不过是个应付 C++98 语言缺陷的蹩脚玩意。</ p >
180
+ < p > < img src ="./img/book.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 例如所谓的 safe-bool idiom,写起来又臭又长,C++11 引入一个 < code > explicit</ code > 关键字直接就秒了。结果还有一批劳保教材大吹特吹 safe-bool idiom,吹得好像是个什么高大上的设计模式一样,不过是个应付 C++98 语言缺陷的蹩脚玩意。</ p >
182
181
</ blockquote >
183
182
< p > 就好比一个< strong > 老外</ strong > 想要学习汉语,他首先肯定是从< strong > 现代汉语</ strong > 学起!而不是上来就教他< strong > 文言文</ strong > 。</ p >
184
183
< blockquote >
185
- < p > < img src =".. /img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 即使这个老外的职业就是“考古”,或者他对“古代文学”感兴趣,也不可能自学文言文的同时完全跳过现代汉语。</ p >
184
+ < p > < img src ="./img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 即使这个老外的职业就是“考古”,或者他对“古代文学”感兴趣,也不可能自学文言文的同时完全跳过现代汉语。</ p >
186
185
</ blockquote >
187
186
< p > 当我们学习中文时,你肯定希望先学现代汉语,再学文言文,再学甲骨文,再学 brainf*< em > *</ em > k,而不是反过来。</ p >
188
187
< p > 对于 C++ 初学者也是如此:我们首先学会简单明了的,符合现代人思维的 C++23,再逐渐回到专为伺候“古代开发环境”的 C++98。</ p >
189
188
< p > 你的生产环境可能不允许用上 C++20 甚至 C++23 的新标准。</ p >
190
189
< p > 别担心,小彭老师教会你 C++23 的正常写法后,会讲解如何在 C++14、C++98 中写出同样的效果。</ p >
191
190
< p > 这样你学习的时候思路清晰,不用被繁琐的 C++98 “奇技淫巧”干扰,学起来事半功倍;但也“吃过见过”,知道古代 C++98 的应对策略。</ p >
192
191
< blockquote >
193
- < p > < img src =".. /img/bulb.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 目前企业里主流使用的是 C++14 和 C++17。例如谷歌就明确规定要求 C++17。</ p >
192
+ < p > < img src ="./img/bulb.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 目前企业里主流使用的是 C++14 和 C++17。例如谷歌就明确规定要求 C++17。</ p >
194
193
</ blockquote >
195
194
< h2 id ="_4 "> 举个例子</ h2 >
196
195
< blockquote >
197
- < p > < img src =".. /img/book.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 接下来的例子你可能看不懂,但只需要记住这个例子是向你说明:越是新的 C++ 标准,反而越容易学!</ p >
196
+ < p > < img src ="./img/book.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 接下来的例子你可能看不懂,但只需要记住这个例子是向你说明:越是新的 C++ 标准,反而越容易学!</ p >
198
197
</ blockquote >
199
198
< p > 例如,在模板元编程中,要检测一个类型 T 是否拥有 < code > foo()</ code > 这一成员函数。如果存在,才会调用。</ p >
200
199
< p > 在 C++20 中,可以使用很方便的 < code > requires</ code > 语法,轻松检测一个表达式是否能合法通过编译。如果能,< code > requires</ code > 语句会返回 < code > true</ code > 。然后用一个 < code > if constexpr</ code > 进行编译期分支判断,即可实现检测到存在则调用。</ p >
@@ -285,7 +284,7 @@ <h2 id="_4">举个例子</h2>
285
284
</ code > </ pre >
286
285
< p > 如此冗长难懂的抽象 C++98 代码,仿佛是“加密”过的代码一样,仅仅是为了实现检测是否存在成员函数 foo……</ p >
287
286
< blockquote >
288
- < p > < img src =".. /img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 如果回到 C 语言,那么你甚至都不用检测了。因为伟大的 C 语言连成员函数都没有,何谈“检测成员函数是否存在”?</ p >
287
+ < p > < img src ="./img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 如果回到 C 语言,那么你甚至都不用检测了。因为伟大的 C 语言连成员函数都没有,何谈“检测成员函数是否存在”?</ p >
289
288
</ blockquote >
290
289
< p > 反观 C++20 的写法,一眼就看明白代码的逻辑是什么,表达你该表达的,而不是迷失于伺候各种语言缺陷,干扰我们学习。</ p >
291
290
< pre > < code class ="language-cpp "> void try_call_foo(auto &t) {
@@ -298,7 +297,7 @@ <h2 id="_4">举个例子</h2>
298
297
// 从现代的 C++23 学起,先知道正常的写法“理应”是什么样。工作中用不上 C++23?我会向你介绍,如果要倒退回 C++14,古代人都是用什么“奇技淫巧”实现同样的效果。
299
298
// 这样你最后同样可以适应公司要求的 C++14 环境。但是从 C++23 学起,你的思维又不会被应付古代语言缺陷的“奇技淫巧”扰乱,学起来就事半功倍。</ p >
300
299
< blockquote >
301
- < p > < img src =".. /img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 既然现代 C++ 这么好,为什么学校不从现代 C++ 教起,教起来还轻松?因为劳保老师保,懒得接触新知识,认为“祖宗之法不可变”,“版号稳定压倒一切”。</ p >
300
+ < p > < img src ="./img/awesomeface.png " height ="30px " width ="auto " style ="margin: 0; border: none "/> 既然现代 C++ 这么好,为什么学校不从现代 C++ 教起,教起来还轻松?因为劳保老师保,懒得接触新知识,认为“祖宗之法不可变”,“版号稳定压倒一切”。</ p >
302
301
</ blockquote > </ div >
303
302
</ div >
304
303
</ div >
0 commit comments