18、C++ 中的设计模式与对象创建

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值