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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date