EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

Virtual Keyword in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » Virtual Keyword in C++

Virtual keyword in c++

Introduction to Virtual Keyword in C++

A virtual keyword in C++ is used to create a virtual function in C++. The virtual function is the parent class function which we want to redefine in the child class. The virtual function is declared by using the keyword virtual. When we define the virtual function the keyword virtual is to be proceeding in the declaration of the function. The virtual keyword tells the compiler to perform late binding or dynamic linkage on the function.

The single pointer is required to refer to all objects of different classes. Therefore, the pointer is created on the superclass to refer all the objects of the derived class and then the superclass pointer contains the address of the object of the derived class always run the superclass function. So, to resolve this we use the virtual function. So, when the virtual function is created in the superclass then the C++ compiler identifies which function is to be executed at run time and the identification of the function takes based on the type of object the superclass pointer pointing.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Virtual Function

The virtual functions of the syntax are given below:

Syntax

class name_class
{
public :
virtual return fun(arg1, arg2, ..)
{
//code inside the function
}
}

As in the syntax, the fun() declares by the virtual keyword, which means the child class can redefine the same methods.

Program #1

#include <iostream>
using namespace std;
class A
{
public:
void disp()
{
cout << " Message from the class A\n ";
}
};
class B :public A
{
public:
void disp()
{
cout << "Message from the class B\n";
}
};
int main()
{
A* obj1;       // super class pointer
B obj2;     // child class object
obj1 = &obj2;
obj1-> disp();     // Late Binding Occurs
}

Output:

virtual.1

In the above program the superclass A having the function disp( ), which is a rewrite in the derived class B. In the main function the disp( ) method is calling on the obj1 object (which is a dynamic binding or late binding. Dynamic binding is a process in which, which specific function to execute is decide at the run time) and disp( ) function of class A is executed.

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (4,890 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

Program #2

#include <iostream>
using namespace std;
class A
{
public:
virtual void disp()
{
cout << " Message from the class A \n ";
}
};
class B :public A
{
public:
void disp()
{
cout << "Message from the class B\n";
}
};
int main()
{
A* obj1;       // super class pointer
B obj2;     // child class object
obj1 = &obj2;
obj1-> disp();     // Dynamic Binding Ocuurs
}

Output:

virtual.2

The above program code is the alteration of the program 1, the disp() function is defined with the keyword virtual and now when the obj1 calling the disp() function, the disp() function of the child class B is executed.

Program #3

#include <iostream>
using namespace std;
class A
{
public:
virtual void disp()
{
cout << " Message from the class A\n ";
}
};
class B :public A
{
public:
virtual void disp()
{
cout << "Message from the class B\n";
}
};
int main()
{
A* obj1;       // super class pointer
B obj2;     // child class object
obj1 = &obj2;
obj1-> disp();     //  Dynamic Binding Ocuurs
}

Output:

virtual.3

The above program code is the alteration of the program 2, the disp() function which is also redefining with the keyword virtual in class B and now when the obj1 calling the disp() function, the disp() function of the child class B is executed.

Next, we write the program for the pure virtual function. The pure virtual function is a function for which don did not have implementations. The pure virtual function also called an abstract virtual function. The pure virtual function declaration assigns 0, as shown in the below code –

Program #4

#include <iostream>
using namespace std;
class A
{
public:
virtual void disp()=0;
};
class B :public A
{
public:
void disp()
{
cout << "Message from the class B\n";
}
};
int main()
{
A* obj1;       // super class pointer
B obj2;     // child class object
obj1 = &obj2;
obj1-> disp();     // Dynamic Binding Ocuurs
}

Output:

Virtual keyword in c++ - virtual.4

Advantages of Virtual Keyword in C++

  • Virtual functions are used to achieve runtime polymorphism.
  • If a class is derived from a class having a virtual function, then the function definition can be redefined in the derived class.

Rules of Virtual Keyword in C++

  • The Virtual keyword in C++ use in the function declaration.
  • Virtual functions must be class members.
  • The virtual function accessed through object pointers.
  • The virtual function cannot be declared as static.
  • The virtual function can be friends from another class.
  • If the virtual function is not used in the superclass then also we can define it in the superclass.
  • The signature of a virtual function of the superclass and the child classes should be the same, so-called as function overriding, else if the two functions with the same name but different signature, it is considered as the overloaded functions in C++.
  • We can have a virtual destructor but not have a virtual constructor.

Conclusion

  • A virtual keyword in C++ is used to create a virtual function in C++.
  • The virtual function is the parent class function which we want to redefine in the child class.
  • The single pointer is required to refer to all objects of different classes.
  • The superclass pointer contains the address of the object of the derived class always run the superclass function.
  • The Virtual functions must be class members, must be class members, cannot be declared as static, accessed through object pointers.
  • The signature of a virtual function of the superclass and the child classes should be the same, so-called as function overriding, else if the two functions with the same name but different signature, it is considered as the overloaded functions in C++.

Recommended Articles

This is a guide to the Virtual keyword in C++. Here we discuss the Introduction and the Advantages of Virtual keyword in C++ along with its Syntax of the virtual function. You can also go through our other suggested articles to learn more –

  1. Method Overriding in C#
  2. Inheritance in C#
  3. C# Commands
  4. Java Commands

C++ Training (4 Courses, 3 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 3 Projects, 4 Quizzes) Learn More