我有三个类: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 允许,但我没有术语/词汇来验证该行为是标准的一部分还是未定义并且恰好在今天起作用。
最佳答案
你问:
Can I override a virtual function with a pure virtual one?
答案是:是的,你可以。来自 C++11 标准:
10.4 Abstract classes
5 [ Note: An abstract class can be derived from a class that is not abstract, and a pure virtual function may override a virtual function which is not pure. —end note ]
关于c++ - 我可以用纯虚拟函数覆盖虚拟函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33526666/