Day1 C++ 回顾补一小节:C++11/14/17/20+ 新标准巡礼
原「C++ 环境搭建/高级程序回顾」只覆盖语言老知识点(namespace/重载/引用/ 虚析构/模板),没有让学员感受到 C++ 这些年一直在大幅进化。新增一个概念性 知识点(无配套代码,同 Vcpkg 那一条的先例):按标准列出 C++11→20 的核心 新特性(auto/智能指针/移动语义/lambda → concepts/ranges/协程/模块), 并提醒"新标准≠生产环境能直接用",挂钩本仓库自身的 C++17 基线选择和 tools/std_probe.py。OUTLINE.md 表格行/核心概念条目与 day1.html 新增幻灯片 一一对应。
This commit is contained in:
@@ -250,6 +250,44 @@ delete p; // 如果 ~Base() 不是 virtual,~Derived() 不会被调用——
|
||||
<a class="filelink" target="_blank" href="../../../p01/ch09/s03/vector_iterator.cpp">p01/ch09/s03/vector_iterator.cpp</a></small></p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>C++11/14/17/20+:一门仍在进化的语言 <span class="tag tag-lecture">讲</span></h3>
|
||||
<div class="concept-box">
|
||||
<h4>核心概念——每 3 年一次实打实的能力升级,不是小修小补</h4>
|
||||
<ul>
|
||||
<li><b>C++11</b>("现代 C++ 元年"):<code>auto</code> 类型推导、智能指针
|
||||
<code>unique_ptr</code>/<code>shared_ptr</code>(RAII 终结手动 <code>new</code>/<code>delete</code>)、
|
||||
右值引用 <code>&&</code> + 移动语义(消除不必要的拷贝)、lambda 表达式、
|
||||
语言级并发 <code>std::thread</code>/<code>mutex</code>/<code>atomic</code>、
|
||||
<code>nullptr</code>、<code>constexpr</code>。</li>
|
||||
<li><b>C++14</b>:泛型 lambda(参数写 <code>auto</code>)、函数返回类型自动推导、
|
||||
<code>std::make_unique</code> 补齐。</li>
|
||||
<li><b>C++17</b>:结构化绑定 <code>auto [a,b] = pair</code>、<code>if</code>/<code>switch</code>
|
||||
带初始化语句、<code>std::optional</code>/<code>variant</code>/<code>string_view</code>、
|
||||
标准库终于有跨平台的 <code>std::filesystem</code>。</li>
|
||||
<li><b>C++20</b>(号称"自 C++11 以来最大的一次变革"):concepts 概念(模板约束,报错从
|
||||
几百行天书变成一句话)、ranges 范围库(<code>view | filter | transform</code> 管道式组合)、
|
||||
coroutines 协程(<code>co_await</code> 把异步代码写成同步的样子)、modules 模块(挑战头文件
|
||||
体系)、<code><=></code> 三路比较一行换 6 个运算符。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pitfall-box">
|
||||
<h4>常见的坑</h4>
|
||||
<ul>
|
||||
<li>新标准 ≠ 现在能用:生产环境的编译器/CI 常年落后最新标准 1–2 个版本,用新特性前先确认
|
||||
目标工具链 <code>-std=</code> 支持到哪。本仓库出于教学稳定性选 C++17 作为基线(顶层
|
||||
<code>CMakeLists.txt</code>),可用 <code>tools/std_probe.py</code> 自己验证某特性最早从哪个
|
||||
标准开始能编译(宿主 gcc 13.3 原生支持到 C++23)。</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="verify-box">
|
||||
<h4>缺口说明</h4>
|
||||
<p>本节为纯概念巡礼,无对应仓库示例——具体新特性的动手练习超出本次"C++回顾"压缩讲解范畴,
|
||||
感兴趣可用 <code>tools/std_probe.py</code> + <code>tools/demo_versions/</code> 自行探索
|
||||
(参见 <a class="filelink" target="_blank" href="../../VERSION_NOTES.md">docs/VERSION_NOTES.md</a>)。</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>CMake:用本仓库当教材 <span class="tag tag-lecture">讲</span></h3>
|
||||
<pre><code class="bash" data-trim>cmake -S . -B build -G Ninja -DBUILD_QT_PART=OFF -DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
Reference in New Issue
Block a user