virtual specifier |
Polymorphic function specifier or shared base class
|
function-specifier := virtual
base-modifiers ::= virtual [access-specifier] | access-specifier [virtual]
|
|
The virtual keyword has two unrelated uses; it is
used in virtual functions and virtual base classes:
As a function specifier, virtual can be used only
with a nonstatic member function. It makes the function and class
polymorphic. A virtual function can be declared with
= 0 after the function header,
which means the function is abstract. You cannot create an instance
of a class with an abstract function; instead, a derived class must
override the function. You can create an instance of the derived
class.
Using virtual as a base-class modifier means the
base class subobject is shared when it is used more than once in an
inheritance graph.
Example
struct shape {
virtual void draw(canvas&) = 0;
virtual void debug( );
};
struct square : virtual shape {
virtual void draw(canvas&);
virtual void debug( );
};
See Also
class, declaration, Chapter 6
|