课程目录
00│课前必读(2讲)
开篇词|C++这么难,为什么我们还要用C++?.pdf
课前必读|有关术语发音及环境要求.html
01|基础篇(9讲)
堆、栈、RAll: C++里该如何管理资源?.m4a
自己动手,实现C++的智能指针.html
右值和移动究竟解决了什么问题?.html
容器汇编l:比较简单的若干容器.pdf
容器汇编II:需要函数对象的容器.html
容器汇编II:需要函数对象的容器.m4a
迭代器和好用的新for循环.pdf
易用性改进l:自动类型推断和初始化.html
易用性改进ll:字面量、静态断言和成员函数说明符.html
02|提高篇(11讲)
到底应不应该返回对象? .pdf
Unicode:进入多文字支持的世界.html
编译期多态:泛型编程和模板入门.pdf
编译期能做些什么?一个完整的计算世界.pdf
SFINAE:不是错误的替换失败是怎么回事.pdf
constexpr:一个常态的世界.pdf
函数对象和lambda:进入函数式编程.html
函数式编程:—种越来越流行的编程范式.pdf
应用可变模板和tuple的编译期技巧.pdf
thread和future:领略异步中的未来.html
03│实战篇(7讲)
工具漫谈:编译、格式化、代码检查、排错各显身手.pdf
处理数据类型变化和错误: optional、variant、expected和Herbception.html
数字计算:介绍线性代数和数值计算库.html
Boost:你需要的“瑞士军刀".pdf
两个单元测试库:C++里如何进行单元测试.html
Easylogging++和spdlog:两个好用的日志库.m4a
Easylogging++和spdlog:两个好用的日志库.pdf
C++RESTSDK:使用现代C++开发网络应用.html
C++RESTSDK:使用现代C++开发网络应用.m4a
04|新年特别策划(2讲)
Concepts:如何对模板进行约束.pdf
Ranges:无迭代器的迭代和更方便的组合.pdf
Coroutines:协作式的交叉调度执行.html
05|未来篇(3讲)
Concepts:如何对模板进行约束.pdf
Ranges:无迭代器的迭代和更方便的组合.html
Coroutines:协作式的交叉调度执行.html
06加餐(1讲)
07|结束语(1讲)
课程讲义
首先是内存分配。如果new出错,按照C++的规则,一般会得到异常bad_alloc,对象的构造也就失败了。这种情况下,在catch捕捉到这个异常之前,所有的栈上对象会全部被析构,资源全部被自动清理。
如果是矩阵的长宽不合适不能做乘法呢?我们同样会得到一个异常,这样,在使用乘法的地方,对象c根本不会被构造出来。
如果在乘法函数里内存分配失败呢?一样,result对象根本没有构造出来,也就没有c对象了。还是一切正常。
如果a、b是本地变量,然后乘法失败了呢?析构函数会自动释放其空间,我们同样不会有任何资源泄漏。
总而言之,只要我们适当地组织好代码、利用好 RAll,实现矩阵的代码和使用矩阵的代码都可以更短、更清晰。我们可以统一在外层某个地方处理异常——通常会记日志、或在界面上向用户报告错误了。
课程资料部分截图
| 现代C++实战30讲课程 阿里网盘 课程大小:0.00字节 |
提取码:**** (购买后可见) |
下载 |