我有几个像这样的c ++接口:
struct IThese {
virtual void doThesethings() = 0;
}
struct IThose : public IThese {
virtual void doThoseOtherThings() = 0;
}
请注意,IThose实现了自己的方法,但也实现了来自其他接口的方法,因此我们的想法是IThose
的实现者需要实现
问题:我需要在doThesethings
重新声明IThose
吗?
IThese
方法吗?
答案 0 :(得分:1)
目前class IThose
是抽象类**,您不必在其中重新声明doTheseThings()
。您可以选择在doTheseThings()
内实施class IThose
。
如果在doThesethings()
中实施了class IThose
,那么它的子类(派生IThose
)可能会也可能不会实现它。但他们必须实施 doThoseOtherThings()
,如果他们不想抽象的话。
**抽象类:在其中或通过其基类
至少包含一个纯virtual
方法
答案 1 :(得分:1)
您 需要在doThesethings()
重新声明IThose
。
继承自IThese
的类(或结构)必须实现doThesethings()
。
来自IThose
的类(或结构)必须同时实现doThesethings()
和'doThoseOtherThings()`。
要回答您的其他问题,如果您要在doThesethings()
中重新声明IThose
,则不同的编制器可能会有不同的反应。要么它没有任何效果,因为编译器会认为它是冗余的,否则它将是一个错误,因为纯虚方法被声明两次并且在两种情况下都是纯虚拟的。