Dr. BABASAHEB AMBEDKAR TECHNOLOGICAL UNIVERSITY
                Presentation on


Pointers , Virtual Functions and Polymorphism.
                       By ,
                                Ruturaj Nalawade
                            Sanjay Bidkar
                            Swapnil Sarwade
                      Under the Guidance of ,
                            Mrs . Ladda
POINTERS
INTRODUCTION
Pointers are the variables which
 holds the addresses of other
 variables.

Pointer variables are denoted by
  „ * ptr ‟

Pointers are the derived data types.
INTRODUCTION – CONT.
E.g. :=
{
          int i , *j;
          i= 3;
          j = &i;
          cout<<“The value of i is t”<<i<<endl;
          cout<<“The value of *j is t”<<*j;
}

Output : :

The value of i is      3
The value of *j is     3
INTRODUCTION – CONT.
E.g. :=
{
          int i , *j;
          i= 3;
          j = &i;
          cout<<“The value of i is t”<<i<<endl;
          cout<<“The value of *j is t”<<*j; * j
}

Output : :

The value of i is      3
The value of *j is     3
Introduction - Cont.
 How the *j gets the value of i ?

int i , *j ;




Variable                      i        j
Names
Value

Memory                      65524    65522
Address
Introduction - Cont.
 How the *j gets the value of i ?

int i , *j ;
i=3;




Variable                      i        j
Names
Value                         3

Memory                      65524    65522
Address
Introduction - Cont.
 How the *j gets the value of i ?

int i , *j ;
i=3;
j=&i;


Variable                      i            j
Names
Value                         3          65524

Memory                      65524        65522
Address




  *j refers to the value at address j.
INTRODUCTION – CONT.

Pointers are used for memory management and
  achieving polymorphism.

C++  adds the concept of
CONSTANT POINTER
 & POINTER TO A CONSTANT . :=
INTRODUCTION - CONT.



1. Constant Pointer      ::

Declaration   =

              data type * const pointer
INTRODUCTION - CONT.
2.   Pointer to a Constant ::

              data type const * pointer



3.   const data type * const pointer
POINTERS       TO   OBJECTS -

Pointers can point to an object created by
 class .

   Declaration : classname object;
                  classname * pointer;

  Definition    : pointer = & object;
POINTERS TO OBJECTS - CONT.

Object pointers are useful in creating
 objects at run time.



We can also use an object pointer to access
 the public members & member function of
 an object , by using „->‟ operator and the
 object pointer .
POINTERS       TO   OBJECTS –CONT.

E.g.
       pointer -> getdata( );

We can also use

       ( * pointer ) . function( );
THIS POINTER

C++ uses keyword „ this ‟ to represent an
 object that invokes a member function.

E.g. The function call A. max( ) will set the
 pointer this to the address of the object A.

E.g. To access private variables inside a
 member function
           a=123;                       or
           this -> a = 123;
THIS POINTER - APPLICATIONS
In operator overloading using member
 function we use implicitly 'this‟ pointer.



The another important application of the
 pointer 'this' is to return the object it points
 to .
POINTERS TO DERIVED CLASS
Pointers to objects of a base class are type
 compatible with pointers to objects of a
 derived class.

A single pointer variable can be made to
 point to objects belonging to different
 classes.
POINTERS TO DERIVED CLASS – CONT.

e.g.
        B *cptr;
        B b;
        D d;
        cptr = & b;
we can also make cptr to point to the object d
 as follows:
    cptr = & d
POINTERS TO DERIVED CLASS – CONT.

  Base Class
                          Derived Class
Public:
a,b
                        Public / Private /
Private /               Protected :
Protected:
c,d                     e,f,g,h

 If cptr = & d;

        cptr      a,b
POINTERS TO DERIVED CLASS – CONT.


This shows that , although a base pointer
  can be made to point to any number of
  derived objects, it can not directly access
  the members defined by a derived class.


To access the members defined by a
  derived class , cast base pointer to the
  derived class type.
POINTERS TO DERIVED CLASS – CONT.


 E.g   . Casting

        dptr -> show ( ) ;

        ( ( DC * ) bptr ) -> show ( ) ;
VIRTUAL FUNCTIONS
VIRTUAL FUNCTION

The application of polymorphism is the
 ability to refer the objects without any regard
 to their classes.



This necessitates the use of a single
 pointer variable to refer to the objects of
 different classes.
VIRTUAL FUNCTION – CONT.
By making the function 'virtual' in base
 class C++ determines which function to use
 at run time based on the type of object
 pointed to by the base pointer , rather than
 the type of the pointer.

Runtime polymorphism is achieved only
 when a virtual function is accessed through
 a pointer to the base class.
VIRTUAL FUNCTIONS - RULES

1. The virtual functions must be members of
     some class.
2.   They cannot be static members.
3.   They are accessed by using object
     pointers.
4.   A virtual function can be friend of other
     function.
5.   A virtual function in a base class must be
     defined , even though it may not be used.
RULES –CONT.
6. We cannot have a virtual constructors, but
  we can have virtual destructors.



7. While a base pointer can point to any type
  of derived object, the reverse is not true.
RULES –CONT.
8. The prototypes of the base class version
   of a virtual function and all the derived
   class versions must be identical.



9. When a base pointer points to a derived
   class , incrementing or decrementing it will
   not make it to point to the next object of
   the derived class.
RULES –CONT.



10.If a virtual function is define in the base
   class ,it need not be necessarily redefined
   in the derived class.
POLYMORPHISM
POLYMORPHISM

 Polymorphism is crucial feature of Object
   Oriented Programming.



 Polymorphism simply means one name
   having multiple forms.
POLYMORPHISM - CONT.

 “Polymorphism   is the genie in OOP who
 takes instruction from clients and properly
 interprets their wishes.”

–   Ira Pohl, “Object Oriented Programming
 using C++”.
POLYMORPHISM – CONT.

Definition:

     Polymorphism is the ability to create a
 variable, a function or an object that has
 more than one form.
EXAMPLE:

For example:

 The + (plus) operator in C++:
    4+5         <-- Integer addition
    3.14 + 2.0 <-- Floating point addition
    s1 + "bar" <-- String concatenation!
TYPES OF POLYMORPHISM



     Compile-time     Run-time
     Polymorphism   Polymorphism
TYPES OF POLYMORPHISM
 In
   compile time polymorphism, compiler is
 able to select the appropriate function a
 particular call at the compile time.

 In
   run time polymorphism, an appropriate
 member function is selected while the
 program is running.
BENEFITS OF POLYMORPHISM

 Simplicity:
This makes your code easier for you to write
 and easier for others to understand.

 Extensibility:

Polymorphism design and implements system
 that are more extensible.
REFERENCES :

Let us C++
             – by Yeshwant Kanetkar.

Object Oriented Programming with C++
             –by E . BALAGURUSAMY.

Internet.
THANK YOU !!