C++ Mixin初探

本文探讨了C++中mixin设计模式的应用,通过TemplateParametersasBaseClasses实现,解决了多重继承问题,提供了安全的功能组合方式。

文章目录

背景

在阅读源码时发现了下面的一种写法,这种写法确实
是第一次接触,一时间不理解这种写法的含义以及设计理念,于是便查找资料学习相关知识。

template<class T>
class Base : public T
{
   
   
    ......
};

最终确定这是c++实现mixin的方式,也就是Template Parameters as Base Classes,那么为什么会诞生这种较复杂的语法设计呢?其存在的意义是什么?


问题

有如下的BasePrint类用于提供打印功能:

class BasePrint
{
   
   
public :
    virtual void print();
};

实际应用中我们对这个基类进行继承扩展,实现定制不同版本的打印功能,然后自己的实际类中继承对应的打印类,选用自己需要的打印版本。

class DerivePrint1 : public BasePrint
{
   
   
public :
    // 这里为了方便就随便输出了,实际应用中比如这个print可以封装为带色彩输出或者格式化输出
    virtual void myprint() {
   
   
        cout<<"Hello World 1!"<<endl;
    }
    virtual void print() {
   
   
        myprint();
    }
};

class myClass : public DerivePrint1{
   
   
};

int main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值