[GCC-XML] virtual function

Brad King brad.king at kitware.com
Sat Feb 2 09:21:35 EST 2008


Nindi Singh wrote:
> class Base {
>   public:
>     virtual void func()=0;
> };
> 
> class Derived:public Base {
>   public:
>     void func(){}
> };
[snip]
> I am curious the method 'func' in class Derived is described as virtual. Its not. If I am missing something, then how can I tell whether a function 'may' be overloaded in a derived class or not.

Yes, it is declared virtual.  It does not matter whether the virtual 
keyword is present.  If there is a function with the same signature in 
the parent class that is declared virtual it implicitly makes your 
function virtual.  This is a C++ rule.

If instead you write

class Base {
   public:
     virtual void func()=0;
};
class Derived: public Base {
   public:
     void func(int) {}
};

then Derived::func is not virtual because it does not match the 
signature from Base::func.  Instead you will be left with an abstract 
class because Base::func is pure-virtual so it must be defined in 
Derived to make it a concrete type.

-Brad




More information about the gccxml mailing list