我正在审核此代码:
class WhiteVolatility:public Inverted< IBlackVolatility > {blablabla function declarations}
所以类WhiteVolatility在这里继承模板......模板类是一个抽象类(IBlackVolatility)。我无法理解究竟发生了什么 - 但我的实际问题是:为什么要使用这种设计?有什么好处?
请在评论中告诉我,如果我的问题无法回答,而您需要更多信息(我无法分辨,因为我对发生的事情没有信心)
答案 0 :(得分:6)
Inverted
是一个类模板。这里使用了模板的特定实例Inverted<IBlackVolatility>
,它与任何普通类完全相同,WhiteVolatility
继承自该普通类。没什么奇怪的:)
至于语义,从名称我会猜测Inverted
模板在其模板参数中反转某些东西(这里似乎是颜色,因为你的黑色波动变为白色)。
答案 1 :(得分:3)
所以WhiteVolatility类继承自这里的模板......
它继承自模板专业化,而不是模板。类模板特化是常规类。
,模板类是抽象类
不,模板参数(推测)是一个抽象类。通过替换模板参数IBlackVolatility
的出现次数,以常规方式从模板生成专门化。
为什么要使用这种设计?有什么好处?
您将继承模板特化,原因完全是您从任何其他类继承的原因 - 实现它定义的接口,或者(可能)将其行为合并到您的类中。你必须看看Inverted
做了什么,看看你为什么要这样做。