在很多多态的例子中,我们都可以看到将基类的方法声明为纯虚函数(virtual void run() const = 0;),这样可以要求子类必须实现这个方法,同时可以体现面向接口编程。

使用virtual的地方还有虚拟继承和虚拟析构函数

例子:

class Point2d{   
public:   
//   
protected:   
float _x;   
float _y;   
}
;   
class Vertex : public virtual Point2d{   
public:   
//   
protected:   
Vertex 
*next;   
}
;   
class Point3d : public virtual Point2d{   
public:   
//   
protected:   
float _z;   
}
;   
class Vertex3d: public Vertex, public Point3d{   
public:   
//   
protected:   
float mumble;   
}
;  


本文来自CSDN博客,转载请标明出处:http:
//blog.csdn.net/chief1985/archive/2009/11/01/4755560.aspx




class SubClass : virtual public BaseClass 中以virtual声明的基类!!由于C++支持多重继承,所以对于一个派生类中有几个直接父类,而几个直接父类中有几个可能分别继承自某一个基类(就是父类的父类),这样在构造最终派生类时,会出现最终派生类中含有多个同一个基类的情况,就会产生二义性的问题(不知道该调用哪个基类的成员变量和函数),为解决此问题,需要使用虚基类,即只对此基类生成一块内存区域,这样最终派生类中就只会含有一个基类了。
虚拟继承的作用:解决由多继承中,父类中可能有相同的父类而引发的二义性问题。虚拟继承的虚拟和虚拟函数的虚拟没有任何关系。