2

我有几个像这样的 C++ 接口:

struct IThese {
virtual void doThesethings() = 0;
}

struct IThose : public IThese {
virtual void doThoseOtherThings() = 0;
}

请注意,ITose 实现了它们自己的方法,但也实现了来自其他接口的方法,所以想法是实现者IThose需要同时实现这两者

问题:我需要重新申报doThesethingsIThose

如果没有,如果我这样做会发生什么?它会影响IThese方法吗?

4

2 回答 2

1

目前class IThose是抽象类**,您不必在doTheseThings()其中重新声明。你可以选择在doTheseThings()里面执行class IThose

如果doThesethings()在 中实现class IThose,那么它的子类(派生IThose可能会也可能不会实现它。但是如果他们不想抽象的话,他们必须实现。 doThoseOtherThings()

virtual**抽象类:在其中或通过其基类包含至少一个纯方法

于 2011-07-14T03:24:04.850 回答
1

无需doThesethings()IThose. _

继承自的类(或结构)IThese 必须实现doThesethings()

继承自的类(或结构)IThose 必须同时实现doThesethings()“doThoseOtherThings()”。

要回答您的另一个问题,如果您要重新声明doThesethings()in IThose,不同的编译器可能会有不同的反应。要么它不会有任何影响,因为编译器会认为它是多余的,要么它会是一个错误,因为纯虚方法被声明了两次并且在两种情况下都是纯虚的。

于 2011-07-14T03:44:44.900 回答