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)!