Skip to main content

Virtual function in c++

Hello friends, in this post today, we learn about what is Virtual function in c++ and what is the rule of virtual function in c++so lets start...

Virtual function in c++,virtual function
Virtual function


Virtual Function:-

It is a run time polymorphism and also known as late binding or linkage binding.


Virtual function is a function which is declared virtual by placing keyword virtual before the function definition/declaration.


The virtual function is usually defined in the base classes and is overridden in the derived class.


Base class and derived class have same function name and base class pointer is assigned address of derived class object then also pointer will execute base class function.


To execute function of derived class, we have to declare function of base class as virtual.


After making virtual function, the compiler will determine which function to execute at run time on the basis of assigned address to pointer of base class.


Virtual function behaves like any other member function but they show their importance when accessed via pointers of base class.


Rules for virtual function:-

1. The virtual functions must be member of any class. They cannot be declared outside the class.


2. They cannot be declared as static members.


3.They can be called using object pointers and even using objects but actual works can be seen only with pointers.


4. A virtual function can be friend to another class.


5. A virtual function in a base class must be defined, even though it may not be used.


6. If two functions with the same name have different prototypes, C++ considers them as overloaded functions, and the virtual function mechanism is ignored.


7. When virtual keyword is present, functions are called on the basis of which type of object pointer hold in it.


8. We cannot have virtual constructors, but we can have virtual destructors.


9. Pointers follow the hierarchy of inheritance and pay regards to the older. The derived class pointer cannot point to the object of base class.


10. Never use ++ or − − operator on pointer of base class pointer to get the next object of derived class. It will only forward/backward the pointer relative to its own class type. Therefore we should not use this method to move the pointer to the next object.


11. If a virtual function is defined in base class, it need not be necessarily redefined in the derived class. In such cases, call will invoke the base class.


Example:

#include <iostream>
using namespace std;

class A
{
    public:
    virtual void display() // virtual function
    {
      cout<<"Hello from class A"<<endl;
    }
};
class B:public A
{
  public:
  void display()
  {  
   cout<<"Hello from class B"<<endl;
  }
};

int main()
{

A *ptr;
A a;
B b;
cout<<"A class pointer ptr assign address of A class object a"<<endl;
ptr=&a;
ptr->display();
 
cout<<"A class pointer ptr assign address of B class object b"<<endl;
ptr=&b;
ptr->display(); 
return 0;
}

Output:-

A class pointer ptr assign address of A class object a
Hello from class A
A class pointer ptr assign address of B class object b
Hello from class B


I hope that whatever information I have given in this post today, you have liked it and you have understood it.so keep learning and wait for the next post that will help you to increase your knowledge with the something new information.

Thank you so much for reading. And take care about yourself and your family.



Comments

Popular posts from this blog

Function with Default arguments in c++

Hello friends, i n this post today, we learn about   Function with Default arguments in c++ .  so lets start... Function with default arguments  Function with default arguments:- In C ++ it is possible for a function not to specify all its arguments. Some of the arguments  may be specified their default values at the time of declaring the function.   Default values are specified when the function is declared. We must add default arguments from right to left. We cannot provide a default value to a particular argument in the middle of an argument list. Default arguments are useful in situations where some arguments always have the same value. For Example, passing marks. In a function with default argument, if one argument is default, all successive arguments  must be default. We cannot provide default values in the middle of the arguments or towards  l eft side. We provide few examples: 1. void fun(int x, int y = 20, int z=35); (valid) 2. void fun(int x,...

Constructor in c++

Hello friends, in this post today, we learn about  what is constructor in c++ and types of constructor . so lets start... Constructor in c++ Constructor:-   A constructor is a “special” member function which initializes the objects of class.  Constructor is used to solve problem of initialization. Properties of constructor:- Constructors are used to construct the object of the class. Constructor name must be same as class name. Constructor is invoked automatically when objects of the class are created. The constructors are always declared in the public section. If declared in the private section then objects are can only be created inside the member functions but serve no purpose. It must be an instance member function , that is, it can never be static. Constructors  do not have any return type not even void so they cannot return any value. Constructor can also be overloaded. Constructors cannot be inherited, but they can be called from the constructors of...

Difference between procedure and object oriented programming in c++

Hello friends, in this post today, we will learn about what is the Difference between procedure and object oriented programming in c++ . so let's start.. .. Object Oriented Programming is programming paradigm that represents concepts as objects that has data fields and associated procedures known as methods. Procedure Oriented Programming (POP)  1. Emphasis is on doing things not on data, means it is function driven. 2. Main focus is on the function and procedures that operate on data. 3. Top Down approach in program design. 4. Large programs are divided programs known as functions into smaller. 5. Most of the functions share global data. 6. Data moves openly in the system from one function to another function. 7. Adding of data and function is difficult. 8. We cannot declare namespace directly.  9. Concepts like inheritance, polymorphism, data encapsulation, abstraction, access specifiers are not      available.  10. Examples: C, Fortran, Pascal, etc… proc...