在C++中,为什么纯 virtual法强制要求其强制压倒一切的只有它的直接孩子(创建对象),而不是到孙子女等等?
struct B {
virtual void foo () = 0;
};
struct D : B {
virtual void foo () { ... };
};
struct DD : D {
// ok! ... if 'B::foo' is not overridden; it will use 'D::foo' implicitly
};
Run Code Online (Sandbox Code Playgroud)
离开这个功能我没有看到什么大不了的.
例如,在语言设计的角度来看,只有当它有一些明确的语句时才struct DD允许使用D::foo它using D::foo;.否则它必须覆盖foo强制性.
在C++中有这种效果的实用方法吗?
c++ overriding virtual-functions class-hierarchy language-lawyer