意图:
使用派生类作为模板参数特化基类。
与多态的区别:
多态是动态绑定(运行时绑定),CRTP是静态绑定(编译时绑定)
在实现多态时,需要重写虚函数,因而这是运行时绑定的操作。
然而如果想在编译期确定通过基类来得到派生类的行为,CRTP便是一种独佳选择,它是通过派生类覆盖基类成员函数来实现静态绑定的。
范式:
示例代码:
意图:
使用派生类作为模板参数特化基类。
与多态的区别:
多态是动态绑定(运行时绑定),CRTP是静态绑定(编译时绑定)
在实现多态时,需要重写虚函数,因而这是运行时绑定的操作。
然而如果想在编译期确定通过基类来得到派生类的行为,CRTP便是一种独佳选择,它是通过派生类覆盖基类成员函数来实现静态绑定的。
范式:
示例代码: