从模板继承

Inheriting from a template?

本文关键字:继承      更新时间:2023-10-16

我正在查看此代码:

class WhiteVolatility:public Inverted< IBlackVolatility > {blablabla function declarations}

所以类WhiteVolatility是从这里的模板继承的。。。模板类是一个抽象类(IBlackVolatility)。我很难理解这里到底发生了什么——但我真正的问题是:为什么要使用这种设计?好处是什么?

如果我的问题无法回答,并且您需要更多信息,请在评论中告诉我(我无法告知,因为我对发生的事情没有信心)

Inverted是一个类模板。这里使用了模板的一个特定实例Inverted<IBlackVolatility>,它与任何普通类都是一样的,WhiteVolatility继承自该普通类。没有什么奇怪的:)

至于语义,根据名称,我猜Inverted模板在其模板参数中反转了一些东西(这里它似乎是颜色,因为你的黑色波动变成了白色)。

所以类WhiteVolatility是从这里的模板继承的。。。

它继承自模板专业化,而不是模板。课程模板专业化是一门普通课程。

模板类是一个抽象类

不,模板参数(可能)是一个抽象类。通过替换模板参数IBlackVolatility的出现,以通常的方式从模板生成专业化。

为什么要用这种设计?好处是什么?

你会从模板专业化中继承,这正是你从任何其他类中继承的原因——实现它定义的接口,或者(也许)将它的行为合并到你的类中。你必须看看Inverted的作用,看看你为什么要在这里这样做。