2010-09-24 163 views

回答

0
  1. 虚函数具有函数体。

  2. 重载可以通过Vartual函数完成。

  3. 它被定义为:virtual int runFun();

  1. 纯Vartual功能对函数体。

  2. 重载是必须在Pure Vartual功能。

  3. 它被定义为:virtual int runFun()= 0;

2

纯虚函数是一个可以声明如下:

class Foo { 
    virtual void bar() = 0; 
}; 

barFoo纯虚拟成员。它没有实现(因此= 0),并且不能被调用。从Foo继承的任何类必须为提供bar的实现。这是唯一的区别:父类没有纯虚拟的实现,所以派生类必须提供它。 (这是一个例外,但很少使用。)

否则,它的工作方式完全相同。鉴于:

class Baz : public Foo { 
    virtual void bar() {} 
}; 

Baz任何实例都可以与Foo*类型的指针进行访问和Baz::bar将被调用。如果Foo::bar是纯虚拟的,则不能实例化Foo,并且对Foo::bar的调用将会出错。如果Foo::bar纯,然后提供给Foo::bar实施,将被要求将呼吁Baz实例FooBaz::bar情况下,即使是通过Foo*

(纯虚也可以实现,这样,例如,Baz::bar可以调用Foo::bar,但这种情况并不常见。)