【发布时间】:2011-04-16 16:23:29
【问题描述】:
【问题讨论】:
标签: c++
【问题讨论】:
标签: c++
纯虚函数是这样声明的:
class Foo {
virtual void bar() = 0;
};
bar 是Foo 的纯虚拟成员。它没有实现(因此= 0),并且不能被调用。任何从Foo 继承的类必须提供bar 的实现。这是唯一的区别:父类没有纯虚拟的实现,因此派生类必须提供它。 (这有一个例外,但很少使用。)
否则,它的工作方式完全相同。给定:
class Baz : public Foo {
virtual void bar() {}
};
Baz 的任何实例都可以使用Foo* 类型的指针访问,Baz::bar 将被调用。如果Foo::bar 是纯虚的,那么Foo 不能被实例化,调用Foo::bar 就会出错。如果Foo::bar 不是纯的,那么为Foo::bar 提供的实现将为Foo 的实例调用,Baz::bar 将为Baz 的实例调用,即使它通过了Foo*。
(纯虚拟也可以有实现,例如,Baz::bar 可以调用Foo::bar,但这并不常见。)
【讨论】:
虚函数有一个函数体。
重载可以通过Vartual Function来完成。
定义为:Virtual int runFun();
同时
纯虚函数在函数体上。
Pure Vartual 函数中必须重载。
定义为:Virtual int runFun()=0;
【讨论】: