现代C++实战30讲
吴咏炜
前 Intel 资深软件架构师
立即订阅
4058 人已学习
课程目录
已完结 36 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (2讲)
开篇词 | C++这么难,为什么我们还要用C++?
免费
课前必读 | 有关术语发音及环境要求
基础篇 (9讲)
01 | 堆、栈、RAII:C++里该如何管理资源?
02 | 自己动手,实现C++的智能指针
03 | 右值和移动究竟解决了什么问题?
04 | 容器汇编 I:比较简单的若干容器
05 | 容器汇编 II:需要函数对象的容器
06 | 异常:用还是不用,这是个问题
07 | 迭代器和好用的新for循环
08 | 易用性改进 I:自动类型推断和初始化
09 | 易用性改进 II:字面量、静态断言和成员函数说明符
提高篇 (11讲)
10 | 到底应不应该返回对象?
11 | Unicode:进入多文字支持的世界
12 | 编译期多态:泛型编程和模板入门
13 | 编译期能做些什么?一个完整的计算世界
14 | SFINAE:不是错误的替换失败是怎么回事?
15 | constexpr:一个常态的世界
16 | 函数对象和lambda:进入函数式编程
17 | 函数式编程:一种越来越流行的编程范式
18 | 应用可变模板和tuple的编译期技巧
19 | thread和future:领略异步中的未来
20 | 内存模型和atomic:理解并发的复杂性
实战篇 (7讲)
21 | 工具漫谈:编译、格式化、代码检查、排错各显身手
22 | 处理数据类型变化和错误:optional、variant、expected和Herbception
23 | 数字计算:介绍线性代数和数值计算库
24 | Boost:你需要的“瑞士军刀”
25 | 两个单元测试库:C++里如何进行单元测试?
26 | Easylogging++和spdlog:两个好用的日志库
27 | C++ REST SDK:使用现代C++开发网络应用
新年特别策划 (2讲)
新春寄语 | 35年码龄程序员:人生漫长,走点弯路在所难免
新春福利 | C++好书荐读
未来篇 (3讲)
28 | Concepts:如何对模板进行约束?
29 | Ranges:无迭代器的迭代和更方便的组合
30 | Coroutines:协作式的交叉调度执行
加餐 (1讲)
加餐 | 部分课后思考题答案合集
结束语 (1讲)
结束语 | 终点已达,行程还要继续
现代C++实战30讲
登录|注册

加餐 | 部分课后思考题答案合集

吴咏炜 2020-02-12
你好,我是吴咏炜。这一讲我为你整理了本专栏部分课后思考题的答案,给你作为参考。

第 2 讲

你觉得智能指针应该满足什么样的线程安全性?
答:(不是真正的回答,只是描述一下标准中的智能指针的线程安全性。)
多个不同线程同时访问不同的智能指针(不管是否指向同一个对象)是安全的。
多个不同线程同时读取同一个智能指针是安全的。
多个不同线程在同一个智能指针上执行原子操作(atomic_load 等)是安全的。
多个不同线程根据同一个智能指针创建新的智能指针(增加引用计数)是安全的。
只会有一个线程最后会(在引用计数表示已经无引用时)调用删除函数去销毁存储的对象。
其他操作潜在是不安全的,特别是在不同的线程对同一个智能指针执行 reset 等修改操作。

第 3 讲

为什么 smart_ptr::operator= 对左值和右值都有效,而且不需要对等号两边是否引用同一对象进行判断?
答:我们使用值类型而非引用类型作为形参,这样实参永远会被移动(右值的情况)或复制(左值的情况),不可能和 *this 引用同一个对象。

第 4 讲

为什么 stack(或 queue)的 pop 函数返回类型为 void,而不是直接返回容器的 top(或 front)成员?
答:这是 C++98 里、还没有移动语义时的设计。如果 pop 返回元素,而元素拷贝时发生异常的话,那这个元素就丢失了。因而容器设计成有分离的 top(或 front)和 pop 成员函数,分别执行访问和弹出的操作。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《现代C++实战30讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(2)

  • 晚风·和煦
    老师,c语言可以通过哪些方式实现c++中的私有成员呢?谢谢老师😃😃😃

    作者回复: 实现?不太明白你的意思了。私有只是编译时的访问控制,不是运行时的。而C完全没有编译时的访问控制的机制。

    2020-02-13
    2
  • 幻境之桥
    "如果内容以一般的中文文本为主,那 UTF-16 效率最高。"
    这是为什么呢?中文不应该是 GBK更省空间吗?

    作者回复: 问题是“哪种 UTF 编码方式空间存储效率比较高”。GBK 不能支持很多其他语言,不在考虑范围内。

    2020-02-12
    1
收起评论
2
返回
顶部