Podcast Script (zh)
[0.120-9.361] SPEAKER_02: C++11 带来了很多新特性。 C++ 从诞生就有很多惊艳特性。 还有 2020 年概念的那些想法。
[9.441-11.449] SPEAKER_02: 对你个人而言,最——
[11.529-16.939] SPEAKER_02: 或者只是让你坐下来思考, 哇,真简洁优雅! C++ 的特性。
[17.239-29.559] SPEAKER_00: 我给编程语言历史会议写了两篇论文。 这些论文基本就是问这类问题。 我正在写第三篇,将在 明年伦敦的编程历史会议上发表。 所以我一直在想这个问题。
[29.639-47.648] SPEAKER_00: 答案很明确:构造函数和析构函数。 构造函数搭建环境的方式, 以及它所在的环境, 构造函数搭建环境以及所在环境的方式, 构造函数为对象类型搭建环境的方式, 还有析构函数最后清理混乱。 这就是 C++ 的关键。
[47.728-56.249] SPEAKER_00: 这就是不用垃圾回收的原因。 这样就能得到可预测的性能。 多数情况下,这是开销最小的办法。 而且类型非常清晰。
[56.329-65.593] SPEAKER_00: 这就是构造和析构的概念。 有时管它叫RAII。 资源获取就是初始化。 构造函数里获取资源, 析构函数里释放掉。
[65.673-71.721] SPEAKER_00: 这恰恰证明我不该做广告。 最好的想法,却叫资源获取即初始化。
[71.801-73.914] SPEAKER_00: 这命名真不怎么样。
[74.214-75.943] SPEAKER_02: 所以类型就是抽象。
[76.023-81.886] SPEAKER_02: 比如你想创建自己的类型。 类型是C++里很重要的一部分。 让它们高效是关键。
[81.966-89.825] SPEAKER_02: 这都快成哲学了, 但构造和析构, 创建类型实例, 以及释放实例的资源, 就是定义对象的方式。
[89.905-93.190] SPEAKER_02: 好比出生和死亡定义了人生。
[93.490-101.152] SPEAKER_00: 是的,没错。 顺便说,哲学很重要。 没哲学,就做不好语言设计。 因为你决定了人能说什么和怎么说。
[101.232-102.741] SPEAKER_00: 这非常重要。
[102.821-106.594] SPEAKER_00: 构造器和析构器1979年就进了C++。
[106.674-110.737] SPEAKER_00: 大概在我用那个叫“带类的C”的第二周。 这是一个基本概念。
[110.817-113.464] SPEAKER_00: 接下来,你要控制复制。
[113.544-120.184] SPEAKER_00: 因为一旦控制了出生和死亡, 你就必须控制复制, 这是创建对象的另一种方式。
[120.264-124.826] SPEAKER_00: 最后,你得能移动对象。 你必须能到处移动对象。
[124.906-130.745] SPEAKER_00: 于是就有了移动操作。 这就是C++类型上能定义的关键操作。
[131.045-134.295] SPEAKER_02: 这些只是C++中美丽的一部分。
[134.595-135.547] SPEAKER_01: 但却是核心。
[135.847-136.543] SPEAKER_00: 是的。
[136.843-137.516] SPEAKER_02: 谢谢。