class Base {  
public:  
  Base(){ }  
  virtual void Bfun1();  
  virtual void Bfun2();  
};  
class Derv : public Base {  
public:  
  Derv(){ }  
  void Dfun1();  
};  
Is there a difference between above definitions and the below ones ? Are they same ? if not how both are the different functionally ?
class Base { 
public:   
  Base(){ }  
  void Bfun1();  
  void Bfun2();  
};  
class Derv : public virtual Base {  
public:  
  Derv(){ }  
  void Dfun1();  
};  
 
     
    