0%

最简单粗暴的方法是

1
void *

稍微工程一点的方法是

1
2
3
4
struct MyType{
enum class TypeName;
union data;
};

再OO一点的方法是

1
class IObject{};

作为通用基类。

都可以实现多类型

泛型

  • 容器内的元素:类型可以参数化
  • 模版函数:形参可以参数化,不同的类型可以共享相同的函数

好处是:编译器可以检查类型
一旦类型确定,就不能再更改,所以不能用于容纳多个类型的容器

继承多态

不同的派生类型有各自的同名函数

容器可以同时容纳同一个基类的不同的派生类型

闭包

闭包是特殊的函数,代码 + 数据绑定在一起,(普通函数只有代码,没有数据,这个数据不是函数的形参,也不是函数内部定义的变量,而是从外部捕获进来),闭包捕获的这些外部数据其实保存在堆上,闭包上下文负责内存管理。

阅读全文 »

本地安装

Downlaod and Install

1
2
mongodb-org-server_5.0.7_rc0_amd64.deb
mongodb-org-shell_5.0.7_rc0_amd64.deb
阅读全文 »

要点

[源代码] –> 词法分析 –> [token串] –> 编译器第一轮(语法分析) –> [语法树] –> 编译器第二轮(中间语言转换/翻译) –> [中间语言] –> 中间语言 VM 执行/解释 –> [原生机器语言]

编译器第一轮和第二轮可以合并成一轮,直接输出中间语言,在现代语言实现里不常见,只用于教学。

以 VM 为分界点,前面可以看成 解释型 语言,用 VM 来解释执行,可能用到即时编译。
如果走完全过程,发布原生机器语言,就是 编译型 语言

阅读全文 »