You are on page 1of 17

Object Oriented

Programming using C++


CST-157
UNIT-III
Pointers and Virtual
Functions
Chapter- 7
Course Objectives
•To understand the basics of Pointers in C++ Programming.
•To apply virtual functions in programming languages for
modeling real world problems.
• To apply the concept of Dynamic Memory Allocation.

University Institute of Engineering


CONTENTS

•Declaring & initializing pointers


• Pointer to objects
• This pointer
• Pointer to derived classes
• Static and dynamic binding
•Dynamic memory allocation
•new and delete operator.

University Institute of Engineering


3
Introduction of Pointers
• Pointer is a variable (like int, float, char,...) which holds
address of another variables.
• Pointer is the most important concept in case of System
programming or CORE programming coz it allows direct
access to memory locations

e.g.:-
1. int a=10;
2. int *pa=&a;
3. cout<<*pa;
University Institute of Engineering
4
Declaring Pointer
Data-type *name;
• * is a unary operator, also called as indirection operator.
• * is used to declare a pointer and also to dereference a
pointer.
• When you write int *,
• compiler assumes that any address that it holds points
to an integer type.
• m= &count;
• it means memory address of count variable is stored into
m.

University Institute of Engineering


5
Initializing Pointer
Int *ptr;
• declaring variable ptr which holds the value at
address of int type
 int val =1;
• assigning int the literal value of 1
 ptr=&val;
• dereference and get value at address stored in ptr
int deref =*ptr
• cout<< deref;
•Output will be 1
University Institute of Engineering
Benefits of Pointer

• Pointers are used in situations when passing actual values is


difficult or not desired.
• To return more than one value from a function.
• They increase the execution speed.
• The pointer are more efficient in handling the data types .
• Pointers reduce the length and complexity of a program.

University Institute of Engineering


7
Pointers to Objects

• Pointers can point to objects as well as to simple


data types and arrays. We’ve seen many examples
of objects defined and given a name, in statements
like
• Distance dist;
• where an object called ‘dist’ is defined to be of the
Distance class

University Institute of Engineering


8
Accessing Member Functions by Pointer
#include <iostream>
using namespace std;
class Distance // Distance class
{
private:
int feet;
float inches;
public:
void getdist() //get length from user
{
cout << “\nEnter feet: “; cin >> feet;
cout << “Enter inches: “; cin >> inches;}

University Institute of Engineering


9
void showdist() //display distance
{ cout << feet << “\’-” << inches << ‘\”’; }
Cont..
}
int main()
{
Distance dist; //define a named Distance object
dist.getdist(); //access object members
dist.showdist(); // with dot operator
Distance* distptr; //pointer to Distance
distptr = new Distance; //points to new Distance object
distptr->getdist(); //access object members
distptr->showdist(); // with -> operator
cout << endl;
return 0;}
University Institute of Engineering
10
This Pointer
• The this pointer is a pointer accessible only within the
non static member functions of a class, struct, or union
type.
• It points to the object for which the member function
is called. Static member functions do not have a this
pointer.
• Syntax:

this->member-identifier

University Institute of Engineering


11
Pointer to Derived
Classes
• It is possible to declare the pointer that points to base
class as well as derived class.
• One pointer can point to different classes.
• For example, X is a base class and Y is a derived class.
• The pointer pointing to X can also point to Y.

University Institute of Engineering


12
Cont..

class base { void main() {


public: base b1;
void show() { b1.show(); // base
cout << “base\n”; derived d1;
d1.show(); // derived
}
base *pb = &b1;
};
pb->show(); // base
class derived : public base {
pb = &d1;
public: pb->show(); // base
void show() { }
cout << “derived\n”; All the function calls here are
} statically bound
};

University Institute of Engineering


13
Static Binding

• Static binding occurs when an object is associated with a


member function based on the static type of the object.
• The static type of an object is the type of its class or the type
of its pointer or reference.
• A member function statically bound to an object can be either
a member of its class or an inherited member of a direct or
indirect base class.
• Since static binding occurs at compile time, it is also called
compile time binding.

University Institute of Engineering


14
Dynamic Binding
• Dynamic binding occurs when a pointer or reference is
associated with a member function based on the dynamic type
of the object.
• The dynamic type of an object is the type of the object
actually pointed or referred to rather than the static type of its
pointer or reference.
• The member function that is dynamically bound must
override a virtual function declared in a direct or indirect
base class.
• Since dynamic binding occurs at run time, it is also called run
time binding.

University Institute of Engineering


15
Course Outcomes
• Understand the C+ programming using pointers
• Identify the strengths and weaknesses of different
programming techniques
• To provide in-depth knowledge of dynamic binding
in programming

University Institute of Engineering


16
References

i. https://www.computerhope.com/jargon/i/imp-
programming.htm
ii. http://people.cs.aau.dk/paradigms_themes-
paradigm-overview-section.html
iii. https://www.tutorialspoint.com/
iv. http://www.doc.ic.ac.uk

University Institute of Engineering

You might also like