diff --git a/.gitignore b/.gitignore index 19c066f..5f81c8a 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,10 @@ node_modules +pdf/zh-cn/*.md + website/db.json -website/public -website/src/modern-cpp/book -website/src/modern-cpp/images/cover-2nd.png \ No newline at end of file +website/public/* +website/src/modern-cpp/book/* +website/src/modern-cpp/assets/cover-2nd.png +website/src/modern-cpp/assets/figures/* \ No newline at end of file diff --git a/README.md b/README.md index 0dade4b..d0d1072 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,13 @@ 本书每章最后还加入了少量难度极小的习题,仅用于检验你是否能混合运用当前章节中的知识点。你可以在[这里](exercises)找到习题的答案,文件夹名称为章节序号。 +## 本书网站 + +本书的[网站](https://changkun.de/modern-cpp)源码可以在[这里](./website)找到,由 [hexo](https://hexo.io) 和 [vuejs](https://vuejs.org) 协同构建而成。网站旨在提供一个除 GitHub 之外的阅读方式,除了在桌面端访问之外,你也可以在移动端上阅读本书。 + ## 致谢 -笔者时间和水平有限,如果读者发现书中内容的错误,欢迎提 [issue](https://github.com/changkun/cpp1x-tutorial/issues)。并感谢以下读者指出本书中出现的错误: - -[recolic](https://www.gitbook.com/@recolic), [sinomiko](https://www.gitbook.com/@sinomiko), [jackwish](https://www.gitbook.com/@jackwish), [asmwarrior](https://www.gitbook.com/@asmwarrior), [garicc](https://www.gitbook.com/@ihpy), [jiangwenhan](https://www.gitbook.com/@jiangwenhan), [liangx8](https://www.gitbook.com/@liangx8), [slivermeteor](https://github.com/slivermeteor), [inkedawn](https://github.com/inkedawn), [zhaoyao73](https://github.com/zhaoyao73), [sundy-li](https://github.com/sundy-li), [dontpanic92](https://github.com/dontpanic92), [axionl](https://github.com/axionl), [Rholais](https://github.com/changkun/modern-cpp-tutorial/commits?author=Rholais) [MikuGhoul](https://github.com/MikuGhoul), [coderall](https://github.com/coderall) +笔者时间和水平有限,如果读者发现书中内容的错误,欢迎提 [issue](https://github.com/changkun/modern-cpp-tutorial/issues),或者直接提 [Pull Request](https://github.com/changkun/modern-cpp-tutorial/pulls)。由衷感谢每一位指出本书中出现错误的读者。 ## 许可 diff --git a/assets/comparison.png b/assets/figures/comparison.png similarity index 100% rename from assets/comparison.png rename to assets/figures/comparison.png diff --git a/assets/pointers1.png b/assets/figures/pointers1.png similarity index 100% rename from assets/pointers1.png rename to assets/figures/pointers1.png diff --git a/assets/pointers2.png b/assets/figures/pointers2.png similarity index 100% rename from assets/pointers2.png rename to assets/figures/pointers2.png diff --git a/book/zh-cn/01-intro.md b/book/zh-cn/01-intro.md index b629a2b..d8fdf7d 100644 --- a/book/zh-cn/01-intro.md +++ b/book/zh-cn/01-intro.md @@ -51,7 +51,7 @@ InstalledDir: /Library/Developer/CommandLineTools/usr/bin 出于一些不可抗力、历史原因,我们不得不在 C++ 中使用一些 C 语言代码(甚至古老的 C 语言代码),例如 Linux 系统调用。在 C++1x 出现之前,大部分人当谈及『C 与 C++ 的区别是什么』时,普遍除了回答面向对象的类特性、泛型编程的模板特性外,就没有其他的看法了,甚至直接回答『差不多』,也是大有人在。图 1.2 中的韦恩图大致上回答了 C 和 C++ 相关的兼容情况。 - + 从现在开始,你的脑子里应该树立『**C++ 不是 C 的一个超集**』这个观念(而且从一开始就不是,后面的[进一步阅读的参考文献](#进一步阅读的参考文献)中给出了 C++98 和 C99 之间的区别)。在编写 C++ 时,也应该尽可能的避免使用诸如 `void*` 之类的程序风格。而在不得不使用 C 时,应该注意使用 `extern "C"` 这种特性,将 C 语言的代码与 C++代码进行分离编译,再统一链接这种做法,例如: diff --git a/book/zh-cn/05-pointers.md b/book/zh-cn/05-pointers.md index 7b37d08..9ffe36d 100644 --- a/book/zh-cn/05-pointers.md +++ b/book/zh-cn/05-pointers.md @@ -168,11 +168,11 @@ int main() { 运行结果是 A, B 都不会被销毁,这是因为 a,b 内部的 pointer 同时又引用了 `a,b`,这使得 `a,b` 的引用计数均变为了 2,而离开作用域时,`a,b` 智能指针被析构,却智能造成这块区域的引用计数减一,这样就导致了 `a,b` 对象指向的内存区域引用计数不为零,而外部已经没有办法找到这块区域了,也就造成了内存泄露,如图所示: - + 解决这个问题的办法就是使用弱引用指针 `std::weak_ptr`,`std::weak_ptr`是一种弱引用(相比较而言 `std::shared_ptr` 就是一种强引用)。弱引用不会引起引用计数增加,当换用弱引用时候,最终的释放流程如下图所示: - + 在上图中,最后一步只剩下 B,而 B 并没有任何智能指针引用它,因此这块内存资源也会被释放。 diff --git a/pdf/zh-cn/meta/template.tex b/pdf/zh-cn/meta/template.tex index 9026a6e..119c0a5 100644 --- a/pdf/zh-cn/meta/template.tex +++ b/pdf/zh-cn/meta/template.tex @@ -175,7 +175,7 @@ $endif$ \noindent 本书系\href{https://github.com/changkun}{欧长坤}著,采用“知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (cc by-nc-sa)”进行许可。\texttt{\small http://creativecommons.org/licenses/by-nc-nd/4.0/} \vspace{8em} - \includegraphics{../assets/cover-2nd.png} + \includegraphics{../../assets/cover-2nd} \end{center} diff --git a/pdf/zh-cn/modern-cpp-tutorial.pdf b/pdf/zh-cn/modern-cpp-tutorial.pdf index f466f8c..2cdb41a 100644 Binary files a/pdf/zh-cn/modern-cpp-tutorial.pdf and b/pdf/zh-cn/modern-cpp-tutorial.pdf differ diff --git a/website/Makefile b/website/Makefile index e0157c7..c4e805c 100755 --- a/website/Makefile +++ b/website/Makefile @@ -3,13 +3,15 @@ all: node install.js rm -rf src/modern-cpp/book python3 filter.py - rm -rf ./src/modern-cpp/images/cover-2nd.png - cp ../assets/cover-2nd.png ./src/modern-cpp/images/cover-2nd.png + rm -rf ./src/modern-cpp/assets/cover-2nd.png + rm -rf ./src/modern-cpp/assets/figures + cp ../assets/cover-2nd.png ./src/modern-cpp/assets/cover-2nd.png + cp -r ../assets/figures ./src/modern-cpp/assets/figures hexo generate mv public/index.html public/modern-cpp/index.html s: node_modules/serve/bin/serve.js ./public clean: - rm ./src/modern-cpp/images/cover-2nd.png - rm -rf src/modern-cpp/book - rm -rf public db.json + rm -rf ./src/modern-cpp/assets/cover-2nd.png + rm -rf ./src/modern-cpp/assets/figures + rm -rf public db.json src/modern-cpp/book diff --git a/website/src/modern-cpp/images/check.png b/website/src/modern-cpp/assets/check.png similarity index 100% rename from website/src/modern-cpp/images/check.png rename to website/src/modern-cpp/assets/check.png diff --git a/website/src/modern-cpp/images/down.png b/website/src/modern-cpp/assets/down.png similarity index 100% rename from website/src/modern-cpp/images/down.png rename to website/src/modern-cpp/assets/down.png diff --git a/website/src/modern-cpp/images/feed.png b/website/src/modern-cpp/assets/feed.png similarity index 100% rename from website/src/modern-cpp/images/feed.png rename to website/src/modern-cpp/assets/feed.png diff --git a/website/src/modern-cpp/images/lang/cn.svg b/website/src/modern-cpp/assets/lang/cn.svg similarity index 100% rename from website/src/modern-cpp/images/lang/cn.svg rename to website/src/modern-cpp/assets/lang/cn.svg diff --git a/website/src/modern-cpp/images/lang/de.svg b/website/src/modern-cpp/assets/lang/de.svg similarity index 100% rename from website/src/modern-cpp/images/lang/de.svg rename to website/src/modern-cpp/assets/lang/de.svg diff --git a/website/src/modern-cpp/images/lang/en.svg b/website/src/modern-cpp/assets/lang/en.svg similarity index 100% rename from website/src/modern-cpp/images/lang/en.svg rename to website/src/modern-cpp/assets/lang/en.svg diff --git a/website/src/modern-cpp/images/menu.png b/website/src/modern-cpp/assets/menu.png similarity index 100% rename from website/src/modern-cpp/images/menu.png rename to website/src/modern-cpp/assets/menu.png diff --git a/website/src/modern-cpp/images/search.png b/website/src/modern-cpp/assets/search.png similarity index 100% rename from website/src/modern-cpp/images/search.png rename to website/src/modern-cpp/assets/search.png diff --git a/website/themes/moderncpp/layout/index.ejs b/website/themes/moderncpp/layout/index.ejs index 71881e4..44bac67 100755 --- a/website/themes/moderncpp/layout/index.ejs +++ b/website/themes/moderncpp/layout/index.ejs @@ -9,7 +9,7 @@