Note: The operating system used in this tutorial is Ubuntu 20.04. You can use other Linux distros or Windows systems. The G++ compiler has been used for the implementation of examples.
Example 01
We are starting with a simple example to illustrate the overall working and structure of a pure virtual function in the C++ abstract class. You have to know that an abstract class doesn’t occupy any object, i.e., not instantiated. However, we can use pointers or references to access this class and its functions. So, create a new C++ file with the help of the “touch” query and open it with an editor, such as Nano editor.
$ nano pure.cc
Every C++ code starts with the input-output stream header included in it. The namespace standard must be declared after that. An abstract class has been initialized named “Parent”. It contains a single pure virtual function declaration called “show()”. This pure function has been initialized with 0. The derived class named “Child” has been initialized. This Child class has been accessing the Parent class while using it as an interface. The Child class contains the definition of a show() method. The show() method has been displaying some text with the “cout” clause. Here comes the main() method. All the work should start from here:
At the start of a main() method, the Parent class pointer “*p” has been created. As the Parent class is abstract, we cannot create its object. The Child class has been initiated with the object “c”. The pointer “*p” of Parent class has been accessing the address of Child class object “c”. Then the pointer “*p” is calling the pure virtual function “show()” by a reference. After saving the C++ pure virtual code, compile it with the G++ compiler package. No errors have been found so far. After running the file, we have got the following output:
$ ./a.out
The result of this illustration can be analyzed in the attached image above.
Example 02
Let’s look at another example of using a pure virtual function in C++. We will be doing some mathematical calculations in the pure virtual method. So, start by opening the same file and modify it a little. Add the header package of the input-output stream and use the standard namespace in the code, as well. We have declared an abstract class named “Result” after the namespace. This class contains a protected integer type variable named “score” used to get marks from the user.
A simple public type method has been defined in the Abstract class named “getscore()”. The “cout” clause in this method requires the user to enter some score. The functions would get the marks from the user as input via the “cin” clause. Then, the pure virtual function “percentage()” is declared to 0 here. The derived class “Status” is defined to get the student percentage by accessing the Parent class as an interface. The Child class “Status” contains the definition of a pure virtual method “percentage()” in it:
The pure virtual function percentage() is calculating the percentage of student marks. This percentage is found with the help of a percentage formula using the marks of a student. The marks have been obtained by the variable “score” having marks entered by the user. The main() function contains the object creation of the Child class. This object is used to call the getscore() method to acquire marks from the user. The same object is used to call the percentage() function to calculate the percentage of marks entered by the user.
Let’s save the code first and exit the file by using “Ctrl+S” and “Ctrl+S”, respectively.
After coming back to the terminal, compile the code first with the g++ compiler package. After that, run the file with the “a.out” query. It will request you to enter your marks. We have added three different marks at every execution and got three different percentages every time.
$ ./a.out
The result of this illustration can be analyzed in the attached image above.
Conclusion
Finally, we have used the examples of using a pure virtual function in the C++ abstract class. We have used abstract and derived classes to illustrate the concept of pure virtual function. Based on the information provided, we believe that it will be easy for you to work on pure virtual functions from now on. Thank you for reading this article and please check out the other articles provided by LinuxHint.com.