If we can not create any objects of a class, then it is called an abstract class. A class is made abstract by adding at least one pure virtual function to it.
Pure virtual function
A function is said to be a pure virtual function, if it has no definition but has only declaration.Pure virtual function is defined with the keyword virtual and followed by return type, function name and "=0".
class Shape { public: virtual void printarea()=0; }; int main() { Shape obj1;//error }
Here printarea() function of Shape class is a pure virtual function as it has no body.
To make a function as pure
virtual function, you should use =0 at the
end of virtual function declaration
Abstract class
When a class has at least one pure virtual function, it is incomplete and no objects can be created from that class. Such a class is called an abstract class.In the earlier example class Shape is an abstract class, and objects can not be created from that class. And the code produces compiler error.
Abstract classes are used to enforce some interfaces on their derived classes
Any derived class of
abstract
class MUST define pure virtual function/s. If not, these derived class also
becomes abstract classes.
Let us derive two classes from our previous abstract class A.
Let us derive two classes from our previous abstract class A.
class Shape { public: virtual void printarea()=0; }; class Circle:public Shape
{ public: void printarea() { cout<<"area of a circle is pi*r*r"; } }; class Rectangle:public Shape {}; int main() { Shape obj1;//error Circle obj2;//valid Shape *ptr;/*valid. Object of A is not created*/ ptr = new Circle;//OK Rectangle obj3;//error }
Also note that, in the code above, Shape obj1 produces error, but not Shape *ptr. Because by defining ptr as a pointer of class Shape, we have not yet created any object. And ptr may point to any of the derived classes of Shape, which might be non-abstract.
Do you like to read these notes in an offline app? Download my Simplified C++ app. You can even try visiting my other apps at Hegdeapps
Comments
Post a Comment