我有三个类:B
,D
和G
。 D
是一个B
,而G
是一个D
。 B
和D
都是抽象的,而B
来自第三方。
B
有一个非纯虚的虚拟方法,G
需要实现它(成为D
)。 我可以重新定义/覆盖一个虚函数为纯虚函数吗?这样做是否是良好的实践?
示例:
class B // from a third party
{
public:
virtual void foo();
};
class D : public B
{
public:
void foo() override = 0; // allowed by gcc 4.8.2
virtual void bar() = 0;
};
class G : public D
{
public:
// forgot to reimplement foo
void bar() override;
};
int main()
{
G test; // compiler error is desired
}
关于“我可以吗?”的问题,gcc是允许的,但我没有相关的术语和词汇来验证其行为是否符合标准,或者它是未定义的并且今天恰好能够工作。
G
中的foo()
方法是纯虚拟的吗?还是不是? - BЈовићG
中,foo
是纯虚函数。 - R Sahu