Sunteți pe pagina 1din 38

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;
*j
cout<<The value of *j is \t<<*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

65524

65522

Names
Value
Memory
Address

Introduction - Cont.
How the *j gets the value of i ?
int i , *j ;
i=3;

Variable
Names
Value
Memory
Address

3
65524

65522

Introduction - Cont.
How the *j gets the value of i ?
int i , *j ;
i=3;
j=&i;

Variable

65524

65524

65522

Names
Value
Memory
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 /
Protected :

Private /
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
2.
3.
4.
5.

of some class.
They cannot be static members.
They are accessed by using object
pointers.
A virtual function can be friend of other
function.
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
Polymorphism

Compile-time
Polymorphism

Function
Overloading

Operator
Overloading

Run-time
Polymorphism

Virtual
Function

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 !!

S-ar putea să vă placă și