From 5a1c0cd8a19981362c030af98dee0cd5486e3765 Mon Sep 17 00:00:00 2001 From: "qingfeng.yy" Date: Thu, 21 Jan 2021 11:24:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=92=8C=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- {x.public => 0.Public}/1.png | Bin .../EffectModernC++.xmind | Bin {x.public => 0.Public}/EffectiveModernCpp.pdf | 0 {x.public => 0.Public}/item19_1.png | Bin .../translated}/Item29.pdf | Bin .../translated}/Item35.pdf | Bin .../translated}/README.pdf | Bin .../translated}/item1.pdf | Bin .../translated}/item10.pdf | Bin .../translated}/item11.pdf | Bin .../translated}/item12.pdf | Bin .../translated}/item13.pdf | Bin .../translated}/item14.pdf | Bin .../translated}/item15.pdf | Bin .../translated}/item16.pdf | Bin .../translated}/item17.pdf | Bin .../translated}/item18.pdf | Bin .../translated}/item19.pdf | Bin .../translated}/item2.pdf | Bin .../translated}/item20.pdf | Bin .../translated}/item21.pdf | Bin .../translated}/item22.pdf | Bin .../translated}/item23.pdf | Bin .../translated}/item24.pdf | Bin .../translated}/item25.pdf | Bin .../translated}/item26.pdf | Bin .../translated}/item27.pdf | Bin .../translated}/item28.pdf | Bin .../translated}/item3.pdf | Bin .../translated}/item30.pdf | Bin .../translated}/item31.pdf | Bin .../translated}/item32.pdf | Bin .../translated}/item33.pdf | Bin .../translated}/item34.pdf | Bin .../translated}/item36.pdf | Bin .../translated}/item37.pdf | Bin .../translated}/item38.pdf | Bin .../translated}/item39.pdf | Bin .../translated}/item4.pdf | Bin .../translated}/item40.pdf | Bin .../translated}/item41.pdf | Bin .../translated}/item42.pdf | Bin .../translated}/item5.pdf | Bin .../translated}/item6.pdf | Bin .../translated}/item7.pdf | Bin .../translated}/item8.pdf | Bin .../translated}/item9.pdf | Bin .../translated}/translate-zh-combine.pdf | Bin 4.SmartPointers/item19.md | 2 +- .../Item29.md | 0 .../item23.md | 0 .../item24.md | 0 .../item25.md | 0 .../item26.md | 0 .../item27.md | 0 .../item28.md | 0 .../item30.md | 0 .../item31.md | 0 .../item32.md | 0 .../item33.md | 0 .../item34.md | 0 .../Item35.md | 0 .../item36.md | 0 .../item37.md | 0 .../item38.md | 0 .../item39.md | 0 .../item40.md | 0 .../media/image-20201022194524454.png | Bin .../media/image-20201022201806802.png | Bin README.md | 50 +++++++++--------- 70 files changed, 26 insertions(+), 26 deletions(-) rename {x.public => 0.Public}/1.png (100%) rename EffectModernC++.xmind => 0.Public/EffectModernC++.xmind (100%) rename {x.public => 0.Public}/EffectiveModernCpp.pdf (100%) rename {x.public => 0.Public}/item19_1.png (100%) rename {translate.public => 0.Public/translated}/Item29.pdf (100%) rename {translate.public => 0.Public/translated}/Item35.pdf (100%) rename {translate.public => 0.Public/translated}/README.pdf (100%) rename {translate.public => 0.Public/translated}/item1.pdf (100%) rename {translate.public => 0.Public/translated}/item10.pdf (100%) rename {translate.public => 0.Public/translated}/item11.pdf (100%) rename {translate.public => 0.Public/translated}/item12.pdf (100%) rename {translate.public => 0.Public/translated}/item13.pdf (100%) rename {translate.public => 0.Public/translated}/item14.pdf (100%) rename {translate.public => 0.Public/translated}/item15.pdf (100%) rename {translate.public => 0.Public/translated}/item16.pdf (100%) rename {translate.public => 0.Public/translated}/item17.pdf (100%) rename {translate.public => 0.Public/translated}/item18.pdf (100%) rename {translate.public => 0.Public/translated}/item19.pdf (100%) rename {translate.public => 0.Public/translated}/item2.pdf (100%) rename {translate.public => 0.Public/translated}/item20.pdf (100%) rename {translate.public => 0.Public/translated}/item21.pdf (100%) rename {translate.public => 0.Public/translated}/item22.pdf (100%) rename {translate.public => 0.Public/translated}/item23.pdf (100%) rename {translate.public => 0.Public/translated}/item24.pdf (100%) rename {translate.public => 0.Public/translated}/item25.pdf (100%) rename {translate.public => 0.Public/translated}/item26.pdf (100%) rename {translate.public => 0.Public/translated}/item27.pdf (100%) rename {translate.public => 0.Public/translated}/item28.pdf (100%) rename {translate.public => 0.Public/translated}/item3.pdf (100%) rename {translate.public => 0.Public/translated}/item30.pdf (100%) rename {translate.public => 0.Public/translated}/item31.pdf (100%) rename {translate.public => 0.Public/translated}/item32.pdf (100%) rename {translate.public => 0.Public/translated}/item33.pdf (100%) rename {translate.public => 0.Public/translated}/item34.pdf (100%) rename {translate.public => 0.Public/translated}/item36.pdf (100%) rename {translate.public => 0.Public/translated}/item37.pdf (100%) rename {translate.public => 0.Public/translated}/item38.pdf (100%) rename {translate.public => 0.Public/translated}/item39.pdf (100%) rename {translate.public => 0.Public/translated}/item4.pdf (100%) rename {translate.public => 0.Public/translated}/item40.pdf (100%) rename {translate.public => 0.Public/translated}/item41.pdf (100%) rename {translate.public => 0.Public/translated}/item42.pdf (100%) rename {translate.public => 0.Public/translated}/item5.pdf (100%) rename {translate.public => 0.Public/translated}/item6.pdf (100%) rename {translate.public => 0.Public/translated}/item7.pdf (100%) rename {translate.public => 0.Public/translated}/item8.pdf (100%) rename {translate.public => 0.Public/translated}/item9.pdf (100%) rename {translate.public => 0.Public/translated}/translate-zh-combine.pdf (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/Item29.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item23.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item24.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item25.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item26.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item27.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item28.md (100%) rename {5.RvalueReferences_MovingSemantics_And_PerfectForwarding => 5.RRefMovSemPerfForw}/item30.md (100%) rename {6.Lambda Expressions => 6.LambdaExpressions}/item31.md (100%) rename {6.Lambda Expressions => 6.LambdaExpressions}/item32.md (100%) rename {6.Lambda Expressions => 6.LambdaExpressions}/item33.md (100%) rename {6.Lambda Expressions => 6.LambdaExpressions}/item34.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/Item35.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/item36.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/item37.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/item38.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/item39.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/item40.md (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/media/image-20201022194524454.png (100%) rename {7.The Concurrency API => 7.TheConcurrencyAPI}/media/image-20201022201806802.png (100%) diff --git a/x.public/1.png b/0.Public/1.png similarity index 100% rename from x.public/1.png rename to 0.Public/1.png diff --git a/EffectModernC++.xmind b/0.Public/EffectModernC++.xmind similarity index 100% rename from EffectModernC++.xmind rename to 0.Public/EffectModernC++.xmind diff --git a/x.public/EffectiveModernCpp.pdf b/0.Public/EffectiveModernCpp.pdf similarity index 100% rename from x.public/EffectiveModernCpp.pdf rename to 0.Public/EffectiveModernCpp.pdf diff --git a/x.public/item19_1.png b/0.Public/item19_1.png similarity index 100% rename from x.public/item19_1.png rename to 0.Public/item19_1.png diff --git a/translate.public/Item29.pdf b/0.Public/translated/Item29.pdf similarity index 100% rename from translate.public/Item29.pdf rename to 0.Public/translated/Item29.pdf diff --git a/translate.public/Item35.pdf b/0.Public/translated/Item35.pdf similarity index 100% rename from translate.public/Item35.pdf rename to 0.Public/translated/Item35.pdf diff --git a/translate.public/README.pdf b/0.Public/translated/README.pdf similarity index 100% rename from translate.public/README.pdf rename to 0.Public/translated/README.pdf diff --git a/translate.public/item1.pdf b/0.Public/translated/item1.pdf similarity index 100% rename from translate.public/item1.pdf rename to 0.Public/translated/item1.pdf diff --git a/translate.public/item10.pdf b/0.Public/translated/item10.pdf similarity index 100% rename from translate.public/item10.pdf rename to 0.Public/translated/item10.pdf diff --git a/translate.public/item11.pdf b/0.Public/translated/item11.pdf similarity index 100% rename from translate.public/item11.pdf rename to 0.Public/translated/item11.pdf diff --git a/translate.public/item12.pdf b/0.Public/translated/item12.pdf similarity index 100% rename from translate.public/item12.pdf rename to 0.Public/translated/item12.pdf diff --git a/translate.public/item13.pdf b/0.Public/translated/item13.pdf similarity index 100% rename from translate.public/item13.pdf rename to 0.Public/translated/item13.pdf diff --git a/translate.public/item14.pdf b/0.Public/translated/item14.pdf similarity index 100% rename from translate.public/item14.pdf rename to 0.Public/translated/item14.pdf diff --git a/translate.public/item15.pdf b/0.Public/translated/item15.pdf similarity index 100% rename from translate.public/item15.pdf rename to 0.Public/translated/item15.pdf diff --git a/translate.public/item16.pdf b/0.Public/translated/item16.pdf similarity index 100% rename from translate.public/item16.pdf rename to 0.Public/translated/item16.pdf diff --git a/translate.public/item17.pdf b/0.Public/translated/item17.pdf similarity index 100% rename from translate.public/item17.pdf rename to 0.Public/translated/item17.pdf diff --git a/translate.public/item18.pdf b/0.Public/translated/item18.pdf similarity index 100% rename from translate.public/item18.pdf rename to 0.Public/translated/item18.pdf diff --git a/translate.public/item19.pdf b/0.Public/translated/item19.pdf similarity index 100% rename from translate.public/item19.pdf rename to 0.Public/translated/item19.pdf diff --git a/translate.public/item2.pdf b/0.Public/translated/item2.pdf similarity index 100% rename from translate.public/item2.pdf rename to 0.Public/translated/item2.pdf diff --git a/translate.public/item20.pdf b/0.Public/translated/item20.pdf similarity index 100% rename from translate.public/item20.pdf rename to 0.Public/translated/item20.pdf diff --git a/translate.public/item21.pdf b/0.Public/translated/item21.pdf similarity index 100% rename from translate.public/item21.pdf rename to 0.Public/translated/item21.pdf diff --git a/translate.public/item22.pdf b/0.Public/translated/item22.pdf similarity index 100% rename from translate.public/item22.pdf rename to 0.Public/translated/item22.pdf diff --git a/translate.public/item23.pdf b/0.Public/translated/item23.pdf similarity index 100% rename from translate.public/item23.pdf rename to 0.Public/translated/item23.pdf diff --git a/translate.public/item24.pdf b/0.Public/translated/item24.pdf similarity index 100% rename from translate.public/item24.pdf rename to 0.Public/translated/item24.pdf diff --git a/translate.public/item25.pdf b/0.Public/translated/item25.pdf similarity index 100% rename from translate.public/item25.pdf rename to 0.Public/translated/item25.pdf diff --git a/translate.public/item26.pdf b/0.Public/translated/item26.pdf similarity index 100% rename from translate.public/item26.pdf rename to 0.Public/translated/item26.pdf diff --git a/translate.public/item27.pdf b/0.Public/translated/item27.pdf similarity index 100% rename from translate.public/item27.pdf rename to 0.Public/translated/item27.pdf diff --git a/translate.public/item28.pdf b/0.Public/translated/item28.pdf similarity index 100% rename from translate.public/item28.pdf rename to 0.Public/translated/item28.pdf diff --git a/translate.public/item3.pdf b/0.Public/translated/item3.pdf similarity index 100% rename from translate.public/item3.pdf rename to 0.Public/translated/item3.pdf diff --git a/translate.public/item30.pdf b/0.Public/translated/item30.pdf similarity index 100% rename from translate.public/item30.pdf rename to 0.Public/translated/item30.pdf diff --git a/translate.public/item31.pdf b/0.Public/translated/item31.pdf similarity index 100% rename from translate.public/item31.pdf rename to 0.Public/translated/item31.pdf diff --git a/translate.public/item32.pdf b/0.Public/translated/item32.pdf similarity index 100% rename from translate.public/item32.pdf rename to 0.Public/translated/item32.pdf diff --git a/translate.public/item33.pdf b/0.Public/translated/item33.pdf similarity index 100% rename from translate.public/item33.pdf rename to 0.Public/translated/item33.pdf diff --git a/translate.public/item34.pdf b/0.Public/translated/item34.pdf similarity index 100% rename from translate.public/item34.pdf rename to 0.Public/translated/item34.pdf diff --git a/translate.public/item36.pdf b/0.Public/translated/item36.pdf similarity index 100% rename from translate.public/item36.pdf rename to 0.Public/translated/item36.pdf diff --git a/translate.public/item37.pdf b/0.Public/translated/item37.pdf similarity index 100% rename from translate.public/item37.pdf rename to 0.Public/translated/item37.pdf diff --git a/translate.public/item38.pdf b/0.Public/translated/item38.pdf similarity index 100% rename from translate.public/item38.pdf rename to 0.Public/translated/item38.pdf diff --git a/translate.public/item39.pdf b/0.Public/translated/item39.pdf similarity index 100% rename from translate.public/item39.pdf rename to 0.Public/translated/item39.pdf diff --git a/translate.public/item4.pdf b/0.Public/translated/item4.pdf similarity index 100% rename from translate.public/item4.pdf rename to 0.Public/translated/item4.pdf diff --git a/translate.public/item40.pdf b/0.Public/translated/item40.pdf similarity index 100% rename from translate.public/item40.pdf rename to 0.Public/translated/item40.pdf diff --git a/translate.public/item41.pdf b/0.Public/translated/item41.pdf similarity index 100% rename from translate.public/item41.pdf rename to 0.Public/translated/item41.pdf diff --git a/translate.public/item42.pdf b/0.Public/translated/item42.pdf similarity index 100% rename from translate.public/item42.pdf rename to 0.Public/translated/item42.pdf diff --git a/translate.public/item5.pdf b/0.Public/translated/item5.pdf similarity index 100% rename from translate.public/item5.pdf rename to 0.Public/translated/item5.pdf diff --git a/translate.public/item6.pdf b/0.Public/translated/item6.pdf similarity index 100% rename from translate.public/item6.pdf rename to 0.Public/translated/item6.pdf diff --git a/translate.public/item7.pdf b/0.Public/translated/item7.pdf similarity index 100% rename from translate.public/item7.pdf rename to 0.Public/translated/item7.pdf diff --git a/translate.public/item8.pdf b/0.Public/translated/item8.pdf similarity index 100% rename from translate.public/item8.pdf rename to 0.Public/translated/item8.pdf diff --git a/translate.public/item9.pdf b/0.Public/translated/item9.pdf similarity index 100% rename from translate.public/item9.pdf rename to 0.Public/translated/item9.pdf diff --git a/translate.public/translate-zh-combine.pdf b/0.Public/translated/translate-zh-combine.pdf similarity index 100% rename from translate.public/translate-zh-combine.pdf rename to 0.Public/translated/translate-zh-combine.pdf diff --git a/4.SmartPointers/item19.md b/4.SmartPointers/item19.md index 7f30e7e..6d75f2e 100644 --- a/4.SmartPointers/item19.md +++ b/4.SmartPointers/item19.md @@ -47,7 +47,7 @@ std::vector> vpw{ pw1, pw2 }; 它不能。它必须使用更多的内存。然而,那部分内存不是`std::shared_ptr`对象的一部分。那部分在堆上面,只要`std::shared_ptr`自定义了分配器,那部分内存随便在哪都行。我前面提到了`std::shared_ptr`对象包含了所指对象的引用计数。没错,但是有点误导人。因为引用计数是另一个更大的数据结构的一部分,那个数据结构通常叫做**控制块**(control block)。控制块包含除了引用计数值外的一个自定义销毁器的拷贝,当然前提是存在自定义销毁器。如果用户还指定了自定义分配器,控制器也会包含一个分配器的拷贝。控制块可能还包含一些额外的数据,正如Item21提到的,一个次级引用计数weak count,但是目前我们先忽略它。我们可以想象`std::shared_ptr`对象在内存中是这样: -![](../x.public/item19_1.png) +![](../0.Public/item19_1.png) 当`std::shared_ptr`对象一创建,对象控制块就建立了。至少我们期望是如此。通常,对于一个创建指向对象的`std::shared_ptr`的函数来说不可能知道是否有其他`std::shared_ptr`早已指向那个对象,所以控制块的创建会遵循下面几条规则: diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/Item29.md b/5.RRefMovSemPerfForw/Item29.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/Item29.md rename to 5.RRefMovSemPerfForw/Item29.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item23.md b/5.RRefMovSemPerfForw/item23.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item23.md rename to 5.RRefMovSemPerfForw/item23.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item24.md b/5.RRefMovSemPerfForw/item24.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item24.md rename to 5.RRefMovSemPerfForw/item24.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item25.md b/5.RRefMovSemPerfForw/item25.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item25.md rename to 5.RRefMovSemPerfForw/item25.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item26.md b/5.RRefMovSemPerfForw/item26.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item26.md rename to 5.RRefMovSemPerfForw/item26.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item27.md b/5.RRefMovSemPerfForw/item27.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item27.md rename to 5.RRefMovSemPerfForw/item27.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item28.md b/5.RRefMovSemPerfForw/item28.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item28.md rename to 5.RRefMovSemPerfForw/item28.md diff --git a/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item30.md b/5.RRefMovSemPerfForw/item30.md similarity index 100% rename from 5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item30.md rename to 5.RRefMovSemPerfForw/item30.md diff --git a/6.Lambda Expressions/item31.md b/6.LambdaExpressions/item31.md similarity index 100% rename from 6.Lambda Expressions/item31.md rename to 6.LambdaExpressions/item31.md diff --git a/6.Lambda Expressions/item32.md b/6.LambdaExpressions/item32.md similarity index 100% rename from 6.Lambda Expressions/item32.md rename to 6.LambdaExpressions/item32.md diff --git a/6.Lambda Expressions/item33.md b/6.LambdaExpressions/item33.md similarity index 100% rename from 6.Lambda Expressions/item33.md rename to 6.LambdaExpressions/item33.md diff --git a/6.Lambda Expressions/item34.md b/6.LambdaExpressions/item34.md similarity index 100% rename from 6.Lambda Expressions/item34.md rename to 6.LambdaExpressions/item34.md diff --git a/7.The Concurrency API/Item35.md b/7.TheConcurrencyAPI/Item35.md similarity index 100% rename from 7.The Concurrency API/Item35.md rename to 7.TheConcurrencyAPI/Item35.md diff --git a/7.The Concurrency API/item36.md b/7.TheConcurrencyAPI/item36.md similarity index 100% rename from 7.The Concurrency API/item36.md rename to 7.TheConcurrencyAPI/item36.md diff --git a/7.The Concurrency API/item37.md b/7.TheConcurrencyAPI/item37.md similarity index 100% rename from 7.The Concurrency API/item37.md rename to 7.TheConcurrencyAPI/item37.md diff --git a/7.The Concurrency API/item38.md b/7.TheConcurrencyAPI/item38.md similarity index 100% rename from 7.The Concurrency API/item38.md rename to 7.TheConcurrencyAPI/item38.md diff --git a/7.The Concurrency API/item39.md b/7.TheConcurrencyAPI/item39.md similarity index 100% rename from 7.The Concurrency API/item39.md rename to 7.TheConcurrencyAPI/item39.md diff --git a/7.The Concurrency API/item40.md b/7.TheConcurrencyAPI/item40.md similarity index 100% rename from 7.The Concurrency API/item40.md rename to 7.TheConcurrencyAPI/item40.md diff --git a/7.The Concurrency API/media/image-20201022194524454.png b/7.TheConcurrencyAPI/media/image-20201022194524454.png similarity index 100% rename from 7.The Concurrency API/media/image-20201022194524454.png rename to 7.TheConcurrencyAPI/media/image-20201022194524454.png diff --git a/7.The Concurrency API/media/image-20201022201806802.png b/7.TheConcurrencyAPI/media/image-20201022201806802.png similarity index 100% rename from 7.The Concurrency API/media/image-20201022201806802.png rename to 7.TheConcurrencyAPI/media/image-20201022201806802.png diff --git a/README.md b/README.md index 1104f99..feddf38 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 《Effective Modern C++ 》翻译 - + [![Backers on Open Collective](https://opencollective.com/EffectiveModernCppChinese/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/EffectiveModernCppChinese/sponsors/badge.svg)](#sponsors) @@ -10,7 +10,7 @@ > ! 我没有版权,我没有版权,我没有版权
> !本书要求读者具有C++基础
> !未翻译的条款名称现在直译,翻译时可能适当修改
-> ! [PDF格式英文版下载](x.public/EffectiveModernCpp.pdf),仅供翻译参考 +> ! [PDF格式英文版下载](0.Public/EffectiveModernCpp.pdf),仅供翻译参考 # 目录 1. 类型推导 @@ -19,8 +19,8 @@ 3. [Item 3:理解decltype](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/1.DeducingTypes/item3.md) 3. [Item 4:学会查看类型推导结果](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/1.DeducingTypes/item4.md) 2. auto - 1. [Item 5:优先考虑auto而非显式类型声明](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/2.auto/item5.md) - 2. [Item 6:auto推导若非己愿,使用显式类型初始化惯用法](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/2.auto/item6.md) + 1. [Item 5:优先考虑auto而非显式类型声明](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/2.Auto/item5.md) + 2. [Item 6:auto推导若非己愿,使用显式类型初始化惯用法](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/2.Auto/item6.md) 3. 移步现代C++ 1. [Item 7:区别使用()和{}创建对象](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item7.md) 2. [Item 8:优先考虑nullptr而非0和NULL](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/3.MovingToModernCpp/item8.md) @@ -40,39 +40,39 @@ 4. [Item 21:优先考虑使用std::make_unique和std::make_shared而非new](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/4.SmartPointers/item21.md) __由 @pusidun贡献__ 5. [Item 22:当使用Pimpl惯用法,请在实现文件中定义特殊成员函数](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/4.SmartPointers/item22.md) __由 @BlurryLight贡献__ 5. 右值引用,移动语意,完美转发 - 1. [Item 23:理解std::move和std::forward](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item23.md) __由 @BlurryLight贡献__ - 2. [Item 24:区别通用引用和右值引用](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item24.md) __由 @BlurryLight贡献__ - 3. [Item 25:对于右值引用使用std::move,对于通用引用使用std::forward](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item25.md)__由 @wendajiang贡献__ - 4. [Item 26:避免重载通用引用](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item26.md)__由 @wendajiang贡献__ - 5. [Item 27:熟悉重载通用引用的替代品](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item27.md)__由 @wendajiang贡献__ - 6. [Item 28:理解引用折叠](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item28.md)__由 @wendajiang贡献__ - 7. [Item 29:认识移动操作的缺点](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item29.md) __由 @wendajiang贡献__ - 8. [Item 30:熟悉完美转发失败的情况](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RvalueReferences_MovingSemantics_And_PerfectForwarding/item30.md)__由 @wendajiang贡献__ + 1. [Item 23:理解std::move和std::forward](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item23.md) __由 @BlurryLight贡献__ + 2. [Item 24:区别通用引用和右值引用](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item24.md) __由 @BlurryLight贡献__ + 3. [Item 25:对于右值引用使用std::move,对于通用引用使用std::forward](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item25.md)__由 @wendajiang贡献__ + 4. [Item 26:避免重载通用引用](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item26.md)__由 @wendajiang贡献__ + 5. [Item 27:熟悉重载通用引用的替代品](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item27.md)__由 @wendajiang贡献__ + 6. [Item 28:理解引用折叠](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item28.md)__由 @wendajiang贡献__ + 7. [Item 29:认识移动操作的缺点](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item29.md) __由 @wendajiang贡献__ + 8. [Item 30:熟悉完美转发失败的情况](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/5.RRefMovSemPerfForw/item30.md)__由 @wendajiang贡献__ 6. Lambda表达式 - 1. [Item 31:避免使用默认捕获模式](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.Lambda%20Expressions/item31.md) __由 @LucienXian贡献__ - 2. [Item 32:使用初始化捕获来移动对象到闭包中](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.Lambda%20Expressions/item32.md) __由 @LucienXian贡献__ - 3. [Item 33:对于std::forward的auto&&形参使用decltype](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.Lambda%20Expressions/item33.md) __由 @LucienXian贡献__ - 4. [Item 34:优先考虑lambda表达式而非std::bind](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.Lambda%20Expressions/item34.md) __由 @LucienXian贡献__ + 1. [Item 31:避免使用默认捕获模式](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.LambdaExpressions/item31.md) __由 @LucienXian贡献__ + 2. [Item 32:使用初始化捕获来移动对象到闭包中](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.LambdaExpressions/item32.md) __由 @LucienXian贡献__ + 3. [Item 33:对于std::forward的auto&&形参使用decltype](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.LambdaExpressions/item33.md) __由 @LucienXian贡献__ + 4. [Item 34:优先考虑lambda表达式而非std::bind](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/6.LambdaExpressions/item34.md) __由 @LucienXian贡献__ 7. 并发API - 1. [Item 35:优先考虑基于任务的编程而非基于线程的编程](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.The%20Concurrency%20API/Item35.md) __由 @wendajiang贡献__ - 2. [Item 36:如果有异步的必要请指定std::launch::threads](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.The%20Concurrency%20API/item36.md) __由 @wendajiang贡献__ - 3. [Item 37:从各个方面使得std::threads unjoinable](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.The%20Concurrency%20API/item37.md) __由 @wendajiang贡献__ - 4. [Item 38:关注不同线程句柄析构行为](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.The%20Concurrency%20API/item38.md) __由 @wendajiang贡献__ - 5. [Item 39:考虑对于单次事件通信使用void](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.The%20Concurrency%20API/item39.md) __由 @wendajiang贡献__ - 6. [Item 40:对于并发使用std::atomic,volatile用于特殊内存区](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.The%20Concurrency%20API/item40.md) __由 @wendajiang贡献__ + 1. [Item 35:优先考虑基于任务的编程而非基于线程的编程](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.5.TheConcurrencyAPI/Item35.md) __由 @wendajiang贡献__ + 2. [Item 36:如果有异步的必要请指定std::launch::threads](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.5.TheConcurrencyAPI/item36.md) __由 @wendajiang贡献__ + 3. [Item 37:从各个方面使得std::threads unjoinable](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.5.TheConcurrencyAPI/item37.md) __由 @wendajiang贡献__ + 4. [Item 38:关注不同线程句柄析构行为](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.5.TheConcurrencyAPI/item38.md) __由 @wendajiang贡献__ + 5. [Item 39:考虑对于单次事件通信使用void](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.5.TheConcurrencyAPI/item39.md) __由 @wendajiang贡献__ + 6. [Item 40:对于并发使用std::atomic,volatile用于特殊内存区](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/7.5.TheConcurrencyAPI/item40.md) __由 @wendajiang贡献__ 8. 微调 1. [Item 41:对于那些可移动总是被拷贝的形参使用传值方式](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/8.Tweaks/item41.md) __由 @wendajiang贡献__ 2. [Item 42:考虑就地创建而非插入](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/8.Tweaks/item42.md) __由 @wendajiang贡献__ - -**[PDF格式中文版下载](./translate.public/translate-zh-combine.pdf)** +# 其他资源 ++ 本书的**[PDF格式中文版](./0.Public/translated/translate-zh-combine.pdf)**,该版本通常同步或者滞后于当前Markdown文档 ++ [Effective C++ Xmind Doc](./0.Public/EffectModernC++.xmind) ## 贡献者 感谢所有参与翻译/勘误/建议的贡献者们~ - ## 赞助翻译 🙏 [[Become a backer](https://opencollective.com/EffectiveModernCppChinese#backer)]