C++ 中的设计模式与对象创建
1. 引言
在 C++ 编程中,有许多强大的编程习惯用法和设计模式可以帮助我们更高效地编写代码。本文将介绍一些常见的设计模式和对象创建的方法,包括静态多态性的实现、类型擦除以及不同类型的工厂模式。
2. 静态多态性与 CRTP
2.1 动态多态与静态多态
当提到多态性时,很多程序员会想到动态多态,即函数调用所需的信息在运行时收集。而静态多态则是在编译时确定调用。动态多态的优点是可以在运行时修改类型列表,通过插件和库扩展类层次结构;静态多态的优点是如果提前知道类型,性能更好。如果性能是关键因素,建议考虑使用静态多态,而 CRTP(Curiously Recurring Template Pattern)就是一种可以实现静态多态的习惯用法。
2.2 CRTP 实现静态多态
要实现静态多态的类层次结构,需要一个基模板类。以下是一个示例:
template <typename ConcreteItem> class GlamorousItem {
public:
void appear_in_full_glory() {
static_cast<ConcreteItem *>(this)->appear_in_full_glory();
}
};
基类的模板参数是派生类。派生类可以这样实现:
class PinkHeels : public G
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



