CRTP 和静态多态
c++古典面试问题之一:面向对象编程三大特性--封装,继承,多态
c++古典面试问题之二:如何实现多态-- 当基类指针指向派生类对象,并通过这个指针调用在派生类中被重写的虚函数
基于上述知识点,今天我们讲下另一种多态实现方式:CRTP (curiously recurring template pattern)
- 虚函数不好用吗?CRTP有什么不一样特性?
虚函数方法有查询虚函数表的内存开销,运行时检查类型,属于动态多态;CRTP无运行时的多余开销,在编译时检查类型,为静态多态,对于嵌入式编程,性能上更优。
CRTP主要缺点是代码可读性差,对于不喜欢使用模板人群更是雪上加霜。
- 如何识别什么是CRTP?
基类是模板类
派生类将自身作为参数传给模板类
文中代码来源:https://github.com/GerdHirsch/Cpp-TemplateFactoryMethod
之后学到哪再继续更新。。。