考虑一个基类class Base
它有一个功能virtual void foo(void)
。这个函数的实现是在Base
;即不是纯虚拟的。
从此类继承时是否可以使用一种模式,即class Child : public Base
,迫使我重写foo
?
除了使其成为纯虚函数之外,没有其他方法可以使重写成为必需的。
请注意,函数被标记为纯虚函数这一事实并不意味着它不能在基类中具有实现 - 它仅意味着派生类must覆盖它。
struct Base {
virtual void foo() = 0; // foo() is pure virtual
};
struct Derived : public Base {
void foo() { // Derived overrides the pure virtual
cout << "Hello ";
Base::foo(); // Call the implementation in the base
cout << endl;
}
};
void Base::foo() {
cout << " world";
}
int main() {
Derived d;
d.foo();
return 0;
}
这打印"Hello world"
,与"world"
部分来自基类的实现。
Demo. http://ideone.com/xoW9Hr
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)