20200224

@ShiKaiWi

Plan

40min: Beringei Compiling 20min: CPP OOP

Notes

Beringei Compiling

使用 ubuntu18.04 来编译,目前使用 2017-05-02 的 folly 和 wangle 版本有问题,采用了 2017-07-31 的版本,但是编译 thrift 的时候遇到了问题,找不到 libcrypto。

OOP

  • 基类的引用或者指针调用 virtual method 的时候,将会发生动态绑定(dynamic binding),这点和 rust 很像。
  • 派生类的内存分布在标准中没有定义。
  • 私有继承(private inheritance) 表达的是一个 has-a 关系,与公有继承(public inheritance)表达的 is-a 关系不同,基类定义的所有 public 对外都不可见(也因此无法将私有继承的派生类指针或者引用当成基类指针或者引用来传递),但是在派生类的内部可以使用基类的 public/protected 成员。
  • static member 在继承中,永远只有一份。
  • 无法进行继承的声明,继承的定义要求基类的定义在派生类之前。
  • final 关键字可以家在类名之后,防止被继承

More

  • dynamic binding 实现原理
  • 派生类的内存分布