Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Beginner
Jul 18, 1997

What is pure virtual function?

Question:
Can you explain and give me examples of pure virtual function? What is the difference between pure virtual function and virtual function?

Answer:
A pure virtual function is a virtual member function of a class that has no implementation. When writing classes from which people will inherit, it is important to stress that the derived classes must define certain virtual functions.

Let's consider a class called Shape and derived classes Square and Circle. We want both derived classes to provide a printing routine.

struct Shape 
{
   virtual void print () = 0; // makes it pure virtual
};

struct Square : Shape
{
   void print ();
};

void Square::print ()
{
  // define the fn
}

struct Circle
{
//.. other stuff
};

void foo ()
{
  Square s ;
  s.print () ; // OK...
  Circle c; // error .. did not define pure virtual fn
}
In this case the compiler will not allow us to make an instance of the Circle class because it did not override the pure virtual function print ();.

Some things to remember:

  1. Pure virtual functions must be overriden by the derived classes.
  2. A class with at least one pure virtual function — either its own (like Shape) or inherited and not overriden (like circle) — cannot be instantiated. Such classes are called Abstract Base Classes.
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date