@@ -421,7 +421,7 @@ <h2 id="index-_1">前言</h2>
421
421
<blockquote>
422
422
<p><img src="../img/bulb.png" height="30px" width="auto" style="margin: 0; border: none"/> 本书还在持续更新中……要追番的话,可以在 <a href="https://github.com/parallel101/cppguidebook">GitHub</a> 点一下右上角的 “Watch” 按钮,每当小彭老师提交新 commit,GitHub 会向你发送一封电子邮件,提醒你小彭老师更新了。</p>
423
423
</blockquote>
424
- <p>更新时间:2024年09月07日 11:28:31 (UTC+08:00)</p>
424
+ <p>更新时间:2024年09月09日 17:24:48 (UTC+08:00)</p>
425
425
<p><a href="https://parallel101.github.io/cppguidebook">在 GitHub Pages 浏览本书</a> | <a href="https://142857.red/book">在小彭老师自己维护的镜像上浏览本书</a></p>
426
426
<h2 id="index-_2">格式约定</h2>
427
427
<blockquote>
@@ -1123,7 +1123,7 @@ <h2 id="symbols-linkage">符号的链接类型 (linkage)</h2>
1123
1123
<li><a href="#cpp_tricks-_13">花括号实现安全的类型转换检查</a></li>
1124
1124
<li><a href="#cpp_tricks-_14">临时右值转左值</a></li>
1125
1125
<li><a href="#cpp_tricks-ostringstream">ostringstream 格式化字符串</a></li>
1126
- <li><a href="#cpp_tricks-adl">ADL 机制 </a></li>
1126
+ <li><a href="#cpp_tricks-adl">ADL 机制实现静态多态 </a></li>
1127
1127
<li><a href="#cpp_tricks-shared_from_this">shared_from_this</a></li>
1128
1128
<li><a href="#cpp_tricks-requires">requires 语法检测是否存在指定成员函数</a></li>
1129
1129
<li><a href="#cpp_tricks-locale-utf8_1">设置 locale 为 .utf8 解决编码问题</a></li>
@@ -1208,7 +1208,7 @@ <h2 id="cpp_tricks-_2">读取整个文件到字符串</h2>
1208
1208
</code></pre>
1209
1209
<p>这样就可以把整个文件读取到内存中,进行处理后再写回文件。</p>
1210
1210
<blockquote>
1211
- <p><img src="../img/question .png" height="30px" width="auto" style="margin: 0; border: none"/> 用 <code>std::ios::binary</code> 选项打开文件,是为了避免文件中出现 <code>'\n'</code> 时,被 MSVC 标准库自动转换成 <code>'\r\n'</code>,以保证跨平台 。</p>
1211
+ <p><img src="../img/bulb .png" height="30px" width="auto" style="margin: 0; border: none"/> 推荐用 <code>std::ios::binary</code> 选项打开二进制文件,否则字符串中出现 <code>'\n'</code> 时,会被 MSVC 标准库自动转换成 <code>'\r\n'</code> 来写入,妨碍我们跨平台 。</p>
1212
1212
</blockquote>
1213
1213
<h2 id="cpp_tricks-_3">别再写构造函数啦!</h2>
1214
1214
<pre><code class="language-cpp">// C++98
@@ -1902,7 +1902,7 @@ <h2 id="cpp_tricks-_7">智能指针防止大对象移动</h2>
1902
1902
1903
1903
using BigTypePtr = unique_ptr<BigType>;
1904
1904
1905
- vector<BigType > arr;
1905
+ vector<BigTypePtr > arr;
1906
1906
1907
1907
void func(BigTypePtr x) {
1908
1908
arr.push_back(std::move(x)); // 只拷贝 8 字节的指针,其指向的 4000 字节不用深拷贝了,直接移动所有权给 vector 里的 BigTypePtr 智能指针
@@ -2489,7 +2489,7 @@ <h2 id="cpp_tricks-ostringstream">ostringstream 格式化字符串</h2>
2489
2489
<p>利用临时变量语法,可以浓缩写在一行里,做个 format 拙劣的模仿者:</p>
2490
2490
<pre><code class="language-cpp">auto str = (std::ostringstream() << "你好," << name << "!答案是 " << answer << ",十六进制:0x" << std::hex << std::setfill('0') << std::setw(2) << answer << "\n").str();
2491
2491
</code></pre>
2492
- <h2 id="cpp_tricks-adl">ADL 机制 </h2>
2492
+ <h2 id="cpp_tricks-adl">ADL 机制实现静态多态 </h2>
2493
2493
<p>TODO</p>
2494
2494
<h2 id="cpp_tricks-shared_from_this">shared_from_this</h2>
2495
2495
<h2 id="cpp_tricks-requires">requires 语法检测是否存在指定成员函数</h2>
0 commit comments