SlideShare a Scribd company logo
ACA Summer School 2014
Advanced C++
Pankaj Prateek
ACA, CSE, IIT Kanpur
June 24, 2014
Pointers Revisited
Pointers are derived data types that contain memory address
of some other variable
Dereferencing a pointer and pointer arithmetic works exactly in
the same way as with structs and built-in types
Accessing (Class Pointers):
item x(12 ,100);
item* ptr = &x;
//
Ways to access
x.getDetails ();
ptr ->getDetails ();
(*ptr). getDetails ();
// All three ways are equivalent
Pointers Revisited
Pointers are derived data types that contain memory address
of some other variable
Dereferencing a pointer and pointer arithmetic works exactly in
the same way as with structs and built-in types
Accessing (Class Pointers):
item x(12 ,100);
item* ptr = &x;
//
Ways to access
x.getDetails ();
ptr ->getDetails ();
(*ptr). getDetails ();
// All three ways are equivalent
Pointers Revisited
Pointers are derived data types that contain memory address
of some other variable
Dereferencing a pointer and pointer arithmetic works exactly in
the same way as with structs and built-in types
Accessing (Class Pointers):
item x(12 ,100);
item* ptr = &x;
//
Ways to access
x.getDetails ();
ptr ->getDetails ();
(*ptr). getDetails ();
// All three ways are equivalent
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to proper type before dereferencing
Null Pointers:
Pointers to a specific data type which does not point to any
object of that type
“Null” or “0” pointers
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to proper type before dereferencing
Null Pointers:
Pointers to a specific data type which does not point to any
object of that type
“Null” or “0” pointers
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to proper type before dereferencing
Null Pointers:
Pointers to a specific data type which does not point to any
object of that type
“Null” or “0” pointers
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to proper type before dereferencing
Null Pointers:
Pointers to a specific data type which does not point to any
object of that type
“Null” or “0” pointers
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to proper type before dereferencing
Null Pointers:
Pointers to a specific data type which does not point to any
object of that type
“Null” or “0” pointers
Pointers Revisited
Void Pointers:
Generic pointers which can refer to variables of any type
Need to be typecasted to proper type before dereferencing
Null Pointers:
Pointers to a specific data type which does not point to any
object of that type
“Null” or “0” pointers
Class: this pointer
this pointer is used to represent the object for which the
current member function was called
Automatically passed as an implicit arguement when a
member function is called
*this is the reference to the object which called the function
Class: this pointer
this pointer is used to represent the object for which the
current member function was called
Automatically passed as an implicit arguement when a
member function is called
*this is the reference to the object which called the function
Class: this pointer
this pointer is used to represent the object for which the
current member function was called
Automatically passed as an implicit arguement when a
member function is called
*this is the reference to the object which called the function
Class: this pointer
class Person {
double height;
public:
person& taller(person& x) {
if (x.height > height)
return x;
else
return *this;
}
};
Person A, B, tallest;
tallest = A.taller(B);
Classes without constructors
We have been using member functions to set the values of
member variables
class item {
int number , cost;
public:
void setValue(int itemNum , int itemCost );
void getValue(void );
};
Classes should allow to use customized definitons in the same
way as we use built-in definitions. Initialization and destruction
properties are important for this.
Classes without constructors
We have been using member functions to set the values of
member variables
class item {
int number , cost;
public:
void setValue(int itemNum , int itemCost );
void getValue(void );
};
Classes should allow to use customized definitons in the same
way as we use built-in definitions. Initialization and destruction
properties are important for this.
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors have the same name as the class
Constructors are invoked when an object of the class is created.
Constructors do not have a return type
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors have the same name as the class
Constructors are invoked when an object of the class is created.
Constructors do not have a return type
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors have the same name as the class
Constructors are invoked when an object of the class is created.
Constructors do not have a return type
Class: Constructors
Constructors are special member functions whose task is to
initialize objects of a class.
Constructors have the same name as the class
Constructors are invoked when an object of the class is created.
Constructors do not have a return type
Class: Constructors
class item {
int number;
int cost;
public:
item(void) { // Constructor
number = cost = 0;
}
void getValue(void );
};
int main () {
item soap , pencil , pen;
soap.getValue ();
pencil.getValue ();
pen.getValue ();
}
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really special cases (singleton design
patterns)
Constructors cannot have a return type (not even void)
Constructors can have multiple parameters and default values
(just like normal functions)
A class can have multiple constructors. All have the same
name (the name of the class), but which constructor is called
depends on the signature of the constructor. This is called
constructor overloading.
Constructors cannot be virtual (discussed later)
Constructors can have reference to an object of the same class
as an input parameter. Such constructors are copy constructors
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really special cases (singleton design
patterns)
Constructors cannot have a return type (not even void)
Constructors can have multiple parameters and default values
(just like normal functions)
A class can have multiple constructors. All have the same
name (the name of the class), but which constructor is called
depends on the signature of the constructor. This is called
constructor overloading.
Constructors cannot be virtual (discussed later)
Constructors can have reference to an object of the same class
as an input parameter. Such constructors are copy constructors
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really special cases (singleton design
patterns)
Constructors cannot have a return type (not even void)
Constructors can have multiple parameters and default values
(just like normal functions)
A class can have multiple constructors. All have the same
name (the name of the class), but which constructor is called
depends on the signature of the constructor. This is called
constructor overloading.
Constructors cannot be virtual (discussed later)
Constructors can have reference to an object of the same class
as an input parameter. Such constructors are copy constructors
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really special cases (singleton design
patterns)
Constructors cannot have a return type (not even void)
Constructors can have multiple parameters and default values
(just like normal functions)
A class can have multiple constructors. All have the same
name (the name of the class), but which constructor is called
depends on the signature of the constructor. This is called
constructor overloading.
Constructors cannot be virtual (discussed later)
Constructors can have reference to an object of the same class
as an input parameter. Such constructors are copy constructors
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really special cases (singleton design
patterns)
Constructors cannot have a return type (not even void)
Constructors can have multiple parameters and default values
(just like normal functions)
A class can have multiple constructors. All have the same
name (the name of the class), but which constructor is called
depends on the signature of the constructor. This is called
constructor overloading.
Constructors cannot be virtual (discussed later)
Constructors can have reference to an object of the same class
as an input parameter. Such constructors are copy constructors
Class: Constructor Properties
Constructors should be declared in the public section of the
class, except for some really special cases (singleton design
patterns)
Constructors cannot have a return type (not even void)
Constructors can have multiple parameters and default values
(just like normal functions)
A class can have multiple constructors. All have the same
name (the name of the class), but which constructor is called
depends on the signature of the constructor. This is called
constructor overloading.
Constructors cannot be virtual (discussed later)
Constructors can have reference to an object of the same class
as an input parameter. Such constructors are copy constructors
Class: Default Constructor
Even if when a constructor has not been defined, the compiler
will define a default constructor. This constructor does
nothing, it is an empty constructor.
If some constructors are defined, but they are all non-default,
the compiler will not implicitly define a default constructor.
This might cause problems. Thus, define a default constructor
whenever a non-default constructor is defined.
Class: Default Constructor
Even if when a constructor has not been defined, the compiler
will define a default constructor. This constructor does
nothing, it is an empty constructor.
If some constructors are defined, but they are all non-default,
the compiler will not implicitly define a default constructor.
This might cause problems. Thus, define a default constructor
whenever a non-default constructor is defined.
Class: Default Constructor
class item {
int number , cost;
public:
item (); // default
item(int itemNum , int itemCost) {
number = itemNum; cost = itemCost;
}
};
item pen1 , pen2;
item pencil1 (123, 40), pencil2 (123, 10);
Class: Multiple Constructors
Which constructor is called depends on the constructor
signature.
Class: Copy Constructors
Constructors which are used to declare and initialize an object
from another object, most probably via a reference to that
object.
Class: Copy Constructors
class item {
int number , cost;
public:
item (); // default
item(int itemNum , int itemCost) {
number = itemNum; cost = itemCost;
}
item(item& temp) {
// Accessing private members
number = temp.number;
cost = temp.cost;
}
};
item pen1 (123, 40);
item pen2 (& pen1 );
Private Members
Why can one access private members of another object in the
definition of the copy constructor?
Access modifiers (private, public) work only at class level and
not at object level. Gence two objects of the same class can
access each other’s private members without any error!!
Private Members
Why can one access private members of another object in the
definition of the copy constructor?
Access modifiers (private, public) work only at class level and
not at object level. Gence two objects of the same class can
access each other’s private members without any error!!
Class: Copy Constructors
The process of Initialization of an object through a copy
cnstructor is known as copy initialization.
Class: Destructors
Special functions like constructors. Destroy objects created by
a constructor
They neither have any input arguement, not a return value.
Implicitly called by a compiler when the object goes out of
scope.
Class: Destructors
Special functions like constructors. Destroy objects created by
a constructor
They neither have any input arguement, not a return value.
Implicitly called by a compiler when the object goes out of
scope.
Class: Destructors
Special functions like constructors. Destroy objects created by
a constructor
They neither have any input arguement, not a return value.
Implicitly called by a compiler when the object goes out of
scope.
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class
Code Reusability
Nobody likes to write code for the same functionality again
and again without any significant improvement
Using already written code is more reliable, saves time, money
and frustration for the programmer of debugging
Example of reuse: for students and teachers, the properties of
the class person are common, and hence should be implented
only once
Reuse of class : Inheritance
Inheritance : Using old classes and their properties to make
new classes
Old class : Base class
New class : Derived class
The derived class inherits, some or all, properties of the base
class

More Related Content

What's hot (19)

PPTX
Object Oriended Programming with Java
Jakir Hossain
 
PPT
Object and Classes in Java
backdoor
 
PDF
Lect 1-java object-classes
Fajar Baskoro
 
PPTX
Class introduction in java
yugandhar vadlamudi
 
PPT
Class and object in C++
rprajat007
 
PPT
object oriented programming language by c++
Mohamad Al_hsan
 
PPTX
Classes and objects
rajveer_Pannu
 
PPTX
Constructors and destructors
Vineeta Garg
 
PDF
Class and object in C++ By Pawan Thakur
Govt. P.G. College Dharamshala
 
PPTX
[OOP - Lec 20,21] Inheritance
Muhammad Hammad Waseem
 
PPT
Introduction To Csharp
g_hemanth17
 
PPT
Introduction to csharp
Raga Vahini
 
PPT
Introduction to csharp
singhadarsh
 
PPS
Introduction to CSharp
Mody Farouk
 
PPS
Introduction to class in java
kamal kotecha
 
PDF
How to write you first class in c++ object oriented programming
Syed Faizan Hassan
 
PPT
Classes & objects new
lykado0dles
 
PPT
vb.net Constructor and destructor
suraj pandey
 
Object Oriended Programming with Java
Jakir Hossain
 
Object and Classes in Java
backdoor
 
Lect 1-java object-classes
Fajar Baskoro
 
Class introduction in java
yugandhar vadlamudi
 
Class and object in C++
rprajat007
 
object oriented programming language by c++
Mohamad Al_hsan
 
Classes and objects
rajveer_Pannu
 
Constructors and destructors
Vineeta Garg
 
Class and object in C++ By Pawan Thakur
Govt. P.G. College Dharamshala
 
[OOP - Lec 20,21] Inheritance
Muhammad Hammad Waseem
 
Introduction To Csharp
g_hemanth17
 
Introduction to csharp
Raga Vahini
 
Introduction to csharp
singhadarsh
 
Introduction to CSharp
Mody Farouk
 
Introduction to class in java
kamal kotecha
 
How to write you first class in c++ object oriented programming
Syed Faizan Hassan
 
Classes & objects new
lykado0dles
 
vb.net Constructor and destructor
suraj pandey
 

Similar to Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK (20)

PPT
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
Venugopalavarma Raja
 
PPTX
Chapter4.pptxdgdhgfshsfhtgjsjryjusryjryjursyj
berihun18
 
PPTX
About Python
Shao-Chuan Wang
 
PPT
Advanced c#
saranuru
 
PPTX
Class and object
prabhat kumar
 
PPTX
6be10b153306cc41e65403247a14a4dba5f9186aCHAPTER 2_POINTERS, VIRTUAL FUNCTIONS...
Mysteriousexpert
 
PPTX
Objects and Types C#
Raghuveer Guthikonda
 
PDF
Introduction to java and oop
baabtra.com - No. 1 supplier of quality freshers
 
PPTX
Constructor and destructor
rajshreemuthiah
 
PPTX
C# classes objects
Dr.Neeraj Kumar Pandey
 
PPTX
Lecture 5
talha ijaz
 
PPTX
C++ Presen. tation.pptx
mohitsinha7739289047
 
PPTX
Ch-2ppt.pptx
ssuser8347a1
 
PPT
ConsTRUCTION AND DESTRUCTION
Shweta Shah
 
PPT
Ccourse 140618093931-phpapp02
Getachew Ganfur
 
PPT
C++ Programming Course
Dennis Chang
 
PPTX
Constructor and destructor in oop
Samad Qazi
 
PPT
Constructor and destructor in C++
Lovely Professional University
 
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
Venugopalavarma Raja
 
Chapter4.pptxdgdhgfshsfhtgjsjryjusryjryjursyj
berihun18
 
About Python
Shao-Chuan Wang
 
Advanced c#
saranuru
 
Class and object
prabhat kumar
 
6be10b153306cc41e65403247a14a4dba5f9186aCHAPTER 2_POINTERS, VIRTUAL FUNCTIONS...
Mysteriousexpert
 
Objects and Types C#
Raghuveer Guthikonda
 
Constructor and destructor
rajshreemuthiah
 
C# classes objects
Dr.Neeraj Kumar Pandey
 
Lecture 5
talha ijaz
 
C++ Presen. tation.pptx
mohitsinha7739289047
 
Ch-2ppt.pptx
ssuser8347a1
 
ConsTRUCTION AND DESTRUCTION
Shweta Shah
 
Ccourse 140618093931-phpapp02
Getachew Ganfur
 
C++ Programming Course
Dennis Chang
 
Constructor and destructor in oop
Samad Qazi
 
Constructor and destructor in C++
Lovely Professional University
 
Ad

More from Pankaj Prateek (6)

PDF
05 graph
Pankaj Prateek
 
PDF
06 segment trees
Pankaj Prateek
 
PDF
04 maths
Pankaj Prateek
 
PDF
03 dp
Pankaj Prateek
 
PDF
02 greedy, d&c, binary search
Pankaj Prateek
 
PDF
01 basics and stl
Pankaj Prateek
 
05 graph
Pankaj Prateek
 
06 segment trees
Pankaj Prateek
 
04 maths
Pankaj Prateek
 
02 greedy, d&c, binary search
Pankaj Prateek
 
01 basics and stl
Pankaj Prateek
 
Ad

Recently uploaded (20)

PPTX
Element 11. ELECTRICITY safety and hazards
merrandomohandas
 
PDF
AI TECHNIQUES FOR IDENTIFYING ALTERATIONS IN THE HUMAN GUT MICROBIOME IN MULT...
vidyalalltv1
 
PPTX
MATLAB : Introduction , Features , Display Windows, Syntax, Operators, Graph...
Amity University, Patna
 
PPTX
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
PPT
PPT2_Metal formingMECHANICALENGINEEIRNG .ppt
Praveen Kumar
 
PPTX
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
PPTX
Worm gear strength and wear calculation as per standard VB Bhandari Databook.
shahveer210504
 
PDF
Viol_Alessandro_Presentazione_prelaurea.pdf
dsecqyvhbowrzxshhf
 
PPTX
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
PPTX
Product Development & DevelopmentLecture02.pptx
zeeshanwazir2
 
PDF
MAD Unit - 1 Introduction of Android IT Department
JappanMavani
 
PPTX
2025 CGI Congres - Surviving agile v05.pptx
Derk-Jan de Grood
 
PPTX
GitOps_Without_K8s_Training_detailed git repository
DanialHabibi2
 
PDF
Design Thinking basics for Engineers.pdf
CMR University
 
PDF
Water Industry Process Automation & Control Monthly July 2025
Water Industry Process Automation & Control
 
PPTX
Evaluation and thermal analysis of shell and tube heat exchanger as per requi...
shahveer210504
 
PPT
Electrical Safety Presentation for Basics Learning
AliJaved79382
 
PPTX
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
PPTX
fatigue in aircraft structures-221113192308-0ad6dc8c.pptx
aviatecofficial
 
PPTX
Big Data and Data Science hype .pptx
SUNEEL37
 
Element 11. ELECTRICITY safety and hazards
merrandomohandas
 
AI TECHNIQUES FOR IDENTIFYING ALTERATIONS IN THE HUMAN GUT MICROBIOME IN MULT...
vidyalalltv1
 
MATLAB : Introduction , Features , Display Windows, Syntax, Operators, Graph...
Amity University, Patna
 
Mechanical Design of shell and tube heat exchangers as per ASME Sec VIII Divi...
shahveer210504
 
PPT2_Metal formingMECHANICALENGINEEIRNG .ppt
Praveen Kumar
 
Shinkawa Proposal to meet Vibration API670.pptx
AchmadBashori2
 
Worm gear strength and wear calculation as per standard VB Bhandari Databook.
shahveer210504
 
Viol_Alessandro_Presentazione_prelaurea.pdf
dsecqyvhbowrzxshhf
 
Lecture 1 Shell and Tube Heat exchanger-1.pptx
mailforillegalwork
 
Product Development & DevelopmentLecture02.pptx
zeeshanwazir2
 
MAD Unit - 1 Introduction of Android IT Department
JappanMavani
 
2025 CGI Congres - Surviving agile v05.pptx
Derk-Jan de Grood
 
GitOps_Without_K8s_Training_detailed git repository
DanialHabibi2
 
Design Thinking basics for Engineers.pdf
CMR University
 
Water Industry Process Automation & Control Monthly July 2025
Water Industry Process Automation & Control
 
Evaluation and thermal analysis of shell and tube heat exchanger as per requi...
shahveer210504
 
Electrical Safety Presentation for Basics Learning
AliJaved79382
 
265587293-NFPA 101 Life safety code-PPT-1.pptx
chandermwason
 
fatigue in aircraft structures-221113192308-0ad6dc8c.pptx
aviatecofficial
 
Big Data and Data Science hype .pptx
SUNEEL37
 

Advanced CPP Lecture 2- Summer School 2014 - ACA CSE IITK

  • 1. ACA Summer School 2014 Advanced C++ Pankaj Prateek ACA, CSE, IIT Kanpur June 24, 2014
  • 2. Pointers Revisited Pointers are derived data types that contain memory address of some other variable Dereferencing a pointer and pointer arithmetic works exactly in the same way as with structs and built-in types Accessing (Class Pointers): item x(12 ,100); item* ptr = &x; // Ways to access x.getDetails (); ptr ->getDetails (); (*ptr). getDetails (); // All three ways are equivalent
  • 3. Pointers Revisited Pointers are derived data types that contain memory address of some other variable Dereferencing a pointer and pointer arithmetic works exactly in the same way as with structs and built-in types Accessing (Class Pointers): item x(12 ,100); item* ptr = &x; // Ways to access x.getDetails (); ptr ->getDetails (); (*ptr). getDetails (); // All three ways are equivalent
  • 4. Pointers Revisited Pointers are derived data types that contain memory address of some other variable Dereferencing a pointer and pointer arithmetic works exactly in the same way as with structs and built-in types Accessing (Class Pointers): item x(12 ,100); item* ptr = &x; // Ways to access x.getDetails (); ptr ->getDetails (); (*ptr). getDetails (); // All three ways are equivalent
  • 5. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  • 6. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  • 7. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  • 8. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  • 9. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  • 10. Pointers Revisited Void Pointers: Generic pointers which can refer to variables of any type Need to be typecasted to proper type before dereferencing Null Pointers: Pointers to a specific data type which does not point to any object of that type “Null” or “0” pointers
  • 11. Class: this pointer this pointer is used to represent the object for which the current member function was called Automatically passed as an implicit arguement when a member function is called *this is the reference to the object which called the function
  • 12. Class: this pointer this pointer is used to represent the object for which the current member function was called Automatically passed as an implicit arguement when a member function is called *this is the reference to the object which called the function
  • 13. Class: this pointer this pointer is used to represent the object for which the current member function was called Automatically passed as an implicit arguement when a member function is called *this is the reference to the object which called the function
  • 14. Class: this pointer class Person { double height; public: person& taller(person& x) { if (x.height > height) return x; else return *this; } }; Person A, B, tallest; tallest = A.taller(B);
  • 15. Classes without constructors We have been using member functions to set the values of member variables class item { int number , cost; public: void setValue(int itemNum , int itemCost ); void getValue(void ); }; Classes should allow to use customized definitons in the same way as we use built-in definitions. Initialization and destruction properties are important for this.
  • 16. Classes without constructors We have been using member functions to set the values of member variables class item { int number , cost; public: void setValue(int itemNum , int itemCost ); void getValue(void ); }; Classes should allow to use customized definitons in the same way as we use built-in definitions. Initialization and destruction properties are important for this.
  • 17. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  • 18. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  • 19. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  • 20. Class: Constructors Constructors are special member functions whose task is to initialize objects of a class. Constructors have the same name as the class Constructors are invoked when an object of the class is created. Constructors do not have a return type
  • 21. Class: Constructors class item { int number; int cost; public: item(void) { // Constructor number = cost = 0; } void getValue(void ); }; int main () { item soap , pencil , pen; soap.getValue (); pencil.getValue (); pen.getValue (); }
  • 22. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  • 23. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  • 24. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  • 25. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  • 26. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  • 27. Class: Constructor Properties Constructors should be declared in the public section of the class, except for some really special cases (singleton design patterns) Constructors cannot have a return type (not even void) Constructors can have multiple parameters and default values (just like normal functions) A class can have multiple constructors. All have the same name (the name of the class), but which constructor is called depends on the signature of the constructor. This is called constructor overloading. Constructors cannot be virtual (discussed later) Constructors can have reference to an object of the same class as an input parameter. Such constructors are copy constructors
  • 28. Class: Default Constructor Even if when a constructor has not been defined, the compiler will define a default constructor. This constructor does nothing, it is an empty constructor. If some constructors are defined, but they are all non-default, the compiler will not implicitly define a default constructor. This might cause problems. Thus, define a default constructor whenever a non-default constructor is defined.
  • 29. Class: Default Constructor Even if when a constructor has not been defined, the compiler will define a default constructor. This constructor does nothing, it is an empty constructor. If some constructors are defined, but they are all non-default, the compiler will not implicitly define a default constructor. This might cause problems. Thus, define a default constructor whenever a non-default constructor is defined.
  • 30. Class: Default Constructor class item { int number , cost; public: item (); // default item(int itemNum , int itemCost) { number = itemNum; cost = itemCost; } }; item pen1 , pen2; item pencil1 (123, 40), pencil2 (123, 10);
  • 31. Class: Multiple Constructors Which constructor is called depends on the constructor signature.
  • 32. Class: Copy Constructors Constructors which are used to declare and initialize an object from another object, most probably via a reference to that object.
  • 33. Class: Copy Constructors class item { int number , cost; public: item (); // default item(int itemNum , int itemCost) { number = itemNum; cost = itemCost; } item(item& temp) { // Accessing private members number = temp.number; cost = temp.cost; } }; item pen1 (123, 40); item pen2 (& pen1 );
  • 34. Private Members Why can one access private members of another object in the definition of the copy constructor? Access modifiers (private, public) work only at class level and not at object level. Gence two objects of the same class can access each other’s private members without any error!!
  • 35. Private Members Why can one access private members of another object in the definition of the copy constructor? Access modifiers (private, public) work only at class level and not at object level. Gence two objects of the same class can access each other’s private members without any error!!
  • 36. Class: Copy Constructors The process of Initialization of an object through a copy cnstructor is known as copy initialization.
  • 37. Class: Destructors Special functions like constructors. Destroy objects created by a constructor They neither have any input arguement, not a return value. Implicitly called by a compiler when the object goes out of scope.
  • 38. Class: Destructors Special functions like constructors. Destroy objects created by a constructor They neither have any input arguement, not a return value. Implicitly called by a compiler when the object goes out of scope.
  • 39. Class: Destructors Special functions like constructors. Destroy objects created by a constructor They neither have any input arguement, not a return value. Implicitly called by a compiler when the object goes out of scope.
  • 40. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 41. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 42. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 43. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 44. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 45. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 46. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class
  • 47. Code Reusability Nobody likes to write code for the same functionality again and again without any significant improvement Using already written code is more reliable, saves time, money and frustration for the programmer of debugging Example of reuse: for students and teachers, the properties of the class person are common, and hence should be implented only once Reuse of class : Inheritance Inheritance : Using old classes and their properties to make new classes Old class : Base class New class : Derived class The derived class inherits, some or all, properties of the base class