从模板继承?

时间:2013-11-27 16:05:00

标签: c++ templates inheritance abstract-class

我正在审核此代码:

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

所以类WhiteVolatility在这里继承模板......模板类是一个抽象类(IBlackVolatility)。我无法理解究竟发生了什么 - 但我的实际问题是:为什么要使用这种设计?有什么好处?

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

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

  

所以WhiteVolatility类继承自这里的模板......

它继承自模板专业化,而不是模板。类模板特化是常规类。

  

,模板类是抽象类

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

  

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

您将继承模板特化,原因完全是您从任何其他类继承的原因 - 实现它定义的接口,或者(可能)将其行为合并到您的类中。你必须看看Inverted做了什么,看看你为什么要这样做。

相关问题