自学内容网 自学内容网

CRTP mixins EBO

CRTP

mixins

EBO

简洁的语言概括一下就是:

CRTP:子类是父类的模板参数,用来实现静态多态

mixins:原本是一种通过继承增加类功能的设计模式,借助CRTP的话,应该和上面常说的CRTP反过来了:父类是子类的模板参数。

EBO是编译器的优化。

具体可以看看GraphicBuffer类的定义:

49  class GraphicBuffer
50      : public ANativeObjectBase<ANativeWindowBuffer, GraphicBuffer, RefBase>,
51        public Flattenable<GraphicBuffer>
52  {

这个定义应该就是传统意义上的CRTP。但是ANativeObjectBase的定义应该是mixins:

33  /*
34   * This helper class turns a ANativeXXX object type into a C++
35   * reference-counted object; with proper type conversions.
36   */
37  template <typename NATIVE_TYPE, typename TYPE, typename REF,
38          typename NATIVE_BASE = android_native_base_t>
39  class ANativeObjectBase : public NATIVE_TYPE, public REF
40  {

原文地址:https://blog.csdn.net/Damon_X/article/details/144064991

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!