基类 派生类virtual 函数的问题
class CDatabase 
{
public:
CDatabase();
~CDatabase();
        ........ 
}class CDBAAAA :public CDatabase
{
public:
CDBAAAA ();
~CDBAAAA (void);
virtual BOOL AddRec(Address *pAdd);
}
基类CDatabase中没有 virtual BOOL AddRec(Address *pAdd); 派生类CDBAAAA 中为什么可以有 virtual BOOL AddRec(Address *pAdd); 派生类中为什么用virtual关键字?

解决方案 »

  1.   

    派生类还可以给别人继续派生啊  为什么不能用virtual  
      

  2.   

    virtual BOOL AddRec(Address *pAdd); 是给派生类定义的,和基类没关系
      

  3.   

    class CDBBBBB :public class CDBAAAA 

    public: 
    CDBBBBB (); 
    ~CDBBBBB (void); 
    virtual BOOL AddRec(Address *pAdd); 
    } 这样就有意义了,单看楼主给的两个类virtual不virtual没什么意义。
      

  4.   

    派生类CDBAAAA的函数可以用virtual,也可以不用的。用virtual的目的是为了扩展,假如程序中还有个类CDDD继承自CDBAAAA,而且它也有函数BOOL AddRec(Address *pAdd),这时如果CDBAAAA的函数BOOL AddRec(Address *pAdd)是虚函数(即用了virtual),那么函数BOOL AddRec(Address *pAdd)就可以在类CDDD中被重新定义。
      

  5.   

    派生类CDBAAAA的函数可以用virtual,实际上是为它的子类提供了一个接口,充分体现了C++的动态多态性