SlideShare a Scribd company logo
CONSTRUCTORS
AND
DESTRUCTORS
CONSTRUCTORS
A member function with the same as its class is called Constructor and it is used to
initialize the object of that class with a legal initial value.
Example :
class student
{
private:
int rollno;
float marks;
public:
student( ) //Constructor
{ rollno=0; marks=0.0; }
};
CONSTRUCTOR CALLING
A constructor can be called in two ways: implicitly and explicitly.
class student
{
private:
int rollno;
float marks;
public:
student( ) //Constructor
{ rollno=0; marks=0.0; }
};
void main()
{
student s1; //implicit call
}
class student
{
private:
int rollno;
float marks;
public:
student( ) //Constructor
{ rollno=0; marks=0.0; }
};
void main()
{
student s1 = student(); //explicit call
}
IMPLICIT CALL OF CONSTRUCTOR EXPLICIT CALL OF CONSTRUCTOR
FEATURES OF CONSTRUCTORS
 Constructor has the same name as class.
 Constructor does not have any return type not even void.
 Constructor can be declared only in the public section of the class.
 Constructor is called automatically when the object of the class is
created.
TYPES OF CONSTRUCTOR
1. Default Constructor: A constructor that accepts no parameter is called the Default
Constructor.
2. Parameterized Constructor: A constructor that accepts parameters for its invocation is
known as parameterized Constructor, also called as Regular Constructor.
3. Copy Constructor: A copy constructor is a special constructor in the C++ programming
language used to create a new object as a copy of an existing object.
Example :
class student
{
private:
int rollno;
float marks;
public:
student( ) // Default Constructor
{ rollno=0; marks=0.0; }
void display();
void enter();
};
void main()
{
student s1; // default constructor called
}
DEFAULT CONSTRUCTOR
Default constructor takes no argument.
It is used to initialize an object of a class with legal initial values.
PARAMETRISED CONSTRUCTOR
 Parametrized constructor accepts
arguments.
 It initializes the data members of
the object with the arguments
passed to it.
 When the object s1 is created,
default constructor is called and
when the objects s2 is created,
parametrized constructor is called
and this is implicit call of
parametrized constructor.
 When the object s3 is created,
again the parametrized
constructor is called but this
explicit call of parametrized
constructor.
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( )
// Default Constructor
{ rollno=0; marks=0.0; }
student(int roll, char nam[20],
float mar)
// Parametrized Constructor
{ rollno=roll;
strcpy(name, nam);
marks =mar;
}
void display();
void enter();
};
void main()
{
student s1;
student s2(1, “RAMESH”,
350);
student s3=student(2,
”KAJAL”, 400);
}
COPY CONSTRUCTOR
 Copy constructor accepts an object as an argument.
 It creates a new object and initializes its data members with data members of the object passed
to it as an argument.
Syntax : class_name( class_name & object_name)
{
}
Note: It is necessary to pass an object by reference in copy constructor because if do not pass the
object by reference then a copy constructor will be invoked to make the copy of the object.
In this process copy constructor will be invoked again and it will be a recursive process ie this
process will repeat again and again endlessly resulting in running short of memory. Ultimately our
system will hang.
COPY CONSTRUCTOR EXAMPLE
Example :
Statement1: default
constructor is called.
Statement2: parametrized
constructor is called.
Statement 3: copy
constructor is called.
Statement4: Parametrized
constructor is called.
statement5: Copy
constructor is called.
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( )
// Default Constructor
{ rollno=0; marks=0.0; }
student(int roll, char nam[20],
float mar)
// Parametrized Constructor
{ rollno=roll;
strcpy(name, nam);
marks =mar; }
student( student & s) // Copy
Constructor
{ rollno= s.rollno;
strcpy(name, s.name);
marks =s.marks;
}
}
void main()
{
student s1; //statement1
student s2( 1, “RAJESH”, 450); //
statemet2
student s3(s2); //statement3
student s4(2, “MOHIT”,320);
//statement4
student s5=s4; //statement5
}
COPY CONSTRUCTOR INVOCATION
Case 1: When an object is passed by value to a function: The pass by value method requires a
copy of the passed argument to be created for the function to operate upon. Thus to create the copy
of the passed object, copy constructor is invoked. Example:
Explanation:
As we are passing the
object s6 by value so
when the function call
job is invoked a copy of
stu is created and values
of object s6 are copied to
object stu.
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( ) // Default Constructor
{ rollno=0; marks=0.0; }
student(int roll, char nam[20],
float mar) //Parametrized
{ rollno=roll;
strcpy(name, nam);
marks =mar; }
student( student & s) // Copy
Constructor
{ rollno= s.rollno;
strcpy(name, s.name);
marks =s.marks;
}
}
void job( student stu)
{ }
void main( )
{
student s6(6, “KAPIL”, 245);
job(s6);
}
COPY CONSTRUCTOR INVOCATION Contd…..
Case 2: When a function returns an object : When an object is returned by a function the copy
constructor is invoked.
Explanation:
 When the function job is
invoked it creates a
temporary object t1 and
then returns it.
 At that time the copy
constructor is invoked to
create a copy of the object
t1 returned by job() and its
value is assigned to s7.
 The copy constructor
creates a temporary object
to hold the return value of
a function returning an
object.
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( ) // Default
{ rollno=0; marks=0.0; }
student(int roll, char nam[20],
float mar) // Parametrised
{ rollno=roll;
strcpy(name, nam);
marks =mar;
}
student( student & s) // Copy
Constructor
{ rollno= s.rollno;
strcpy(name, s.name);
marks =s.marks;
}
}
student job( )
{ student t1(12, “AJAY”, 443);
return t1; }
void main( )
{
student s6(6, “KAPIL”, 245);
student s7=job();
}
COPY CONSTRUCTOR INVOCATION Contd…..
Case 3: Copy constructor is invoked when the value of one object is copied to another object at the
time of creating an object. In all the other cases copy constructor is not invoked and value of one
object is copied to another object simply data member by data member. Example :
EXPLANATION:
Statement1: default
constructor is called
Statement2: parametrized
constructor is called
Statement 3: copy
constructor is called
statement4: Parametrized
constructor is called
statement5: Copy
constructor is called
statement6: Copy
constructor is not called
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( ) // Default Constructor
{ rollno=0; marks=0.0; }
student(int roll, char nam[20], float
mar) // Parametrized Constructor
{ rollno=roll;
strcpy(name, nam);
marks =mar;
}
student( student & s) // Copy
Constructor
{ rollno= s.rollno;
strcpy(name, s.name);
marks =s.marks;
} }
void main()
{
student s1; //statement1
student s2( 1, “RAJESH”, 450); //
statemet2
student s3(s2); //statement3
student s4(2, “MOHIT”,320);
//statement4
Student s5=s4; //statement5
s1=s5; } // statement6
CONSTRUCTOR OVERLOADING
C++ allows more than one constructors to be defined in a single class.
Defining more than one constructors in a single class provided they all differ in either type or
number of argument is called constructor overloading.
 In the class student, there are 4
constructors:
1 default constructor,
2 parametrized constructors
and 1 copy constructor.
 Defining more than one
constructor in a single class is
called constructor overloading.
 We can define as many
parametrized constructors as
we want in a single class
provided they all differ in either
number or type of arguments.
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( ) // Default Constructor
{ rollno=0; marks=0.0; }
student(int roll, char nam[20],
float mar) // Parametrized Constructor
{ rollno=roll;
strcpy(name, nam);
marks =mar;
}
student(int roll, char nam[20]) //
Parametrized Constructor
{ rollno=roll;
strcpy(name, nam);
marks =100;
}
student( student & s) // Copy
Constructor
{ rollno= s.rollno;
strcpy(name, s.name);
marks =s.marks;
}
}
DESTRUCTOR
 A destructor is a member function whose
name is the same as the class name and
is preceded by tilde(“~”).
 It is automatically by the compiler when
an object goes out of scope.
 Destructors are usually used to deallocate
memory and do other cleanup for a class
object and its class members when the
object is destroyed.
 Note: In this program first the object s1 is
created. At that time constructor is called.
When the program goes over the object
s1 will also go out of scope. At that time
destructor is called.
Example :
class student
{ private:
int rollno;
float marks;
public:
student( ) //Constructor
{ rollno=0; marks=0.0; }
~student() //Destructor
{ }
};
void main()
{ student s1;}
FEATURES OF DESTRUCTOR
It has the same name as that of the class and preceded by tilde sign(~).
It is automatically by the compiler when an object goes out of scope.
Destructors are usually used to deallocate memory and do other cleanup for
a class object and its class members when the object goes out of scope.
Destructor is always declared in the public section of the class.
We can have only one destructor in a class.
POINTS TO REMEMBER
Constructors and destructors do not have return type, not even void nor can they
return values.
The compiler automatically calls constructors when defining class objects and
calls destructors when class objects go out of scope.
Derived classes do not inherit constructors or destructors from their base
classes, but they do call the constructor and destructor of base classes.
The constructor of the base class is called first and then the constructor of the
child class/es.
The destructor for a child class object is called before destructors for base
class/es are called.
If we do not declare our own constructor and destructor in the class, then they
are automatically defined by the compiler.
POINTS TO REMEMBER Contd……
 I f we declare our own constructor of any one type then it is necessary to define constructors
of other types also otherwise we will not be able to create an object whose constructor
definition is not given in the class.
 C++ compiler uses the concept of stack in memory allocation and deallocation. Thus
compiler creates the memory in sequential order and delete the memory in reverse order.
Deallocation
Allocation
x3
x2 x1
Consider the class student declared in the previous slides. If the main
program is as given below then allocation and deallocation of
memory to objects will take place as given in the figure::
void main()
{
student x1, x2, x3;
}
x1
x2
x3
EXAMPLE EXPLAINED
OUTPUT
Default constructor called
Parametrized constructor
called
Copy constructor called
Parametrized constructor
called
Copy constructor called
Destructor called
Destructor called
Destructor called
Destructor called
Destructor called
class student
{
private:
int rollno;
char name[20];
float marks;
public:
student( ) // Default Constructor
{ rollno=0; marks=0.0;
cout<<“Default constructor calledn”; }
student(int roll, char nam[20], float mar)
// Parametrized Constructor
{ rollno=roll;
strcpy(name, nam);
marks =mar;
cout<<“Parametrized constructor
calledn”;
}
student( student & s) // Copy
Constructor
{ rollno= s.rollno;
strcpy(name, s.name);
marks =s.marks;
cout<<“copy constructor
calledn”;
}
~student() //Destructor
{ cout<<“Destructor
calledn”; }
}
void main()
{
student s1;
student s2( 1, “RAJESH”, 450);
student s3(s2);
student s4(2, “MOHIT”,320);
student s5=s4; }

More Related Content

What's hot

Oop c++class(final).ppt
Oop c++class(final).pptOop c++class(final).ppt
Oop c++class(final).ppt
Alok Kumar
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
Doncho Minkov
 
class and objects
class and objectsclass and objects
class and objects
Payel Guria
 
Inline function
Inline functionInline function
Inline function
Tech_MX
 

What's hot (20)

Constructor and Types of Constructors
Constructor and Types of ConstructorsConstructor and Types of Constructors
Constructor and Types of Constructors
 
Constructor and destructor in C++
Constructor and destructor in C++Constructor and destructor in C++
Constructor and destructor in C++
 
Types of Constructor in C++
Types of Constructor in C++Types of Constructor in C++
Types of Constructor in C++
 
Java static keyword
Java static keywordJava static keyword
Java static keyword
 
Pointers in c++
Pointers in c++Pointers in c++
Pointers in c++
 
Classes and objects
Classes and objectsClasses and objects
Classes and objects
 
Oop c++class(final).ppt
Oop c++class(final).pptOop c++class(final).ppt
Oop c++class(final).ppt
 
Class and object in C++
Class and object in C++Class and object in C++
Class and object in C++
 
Constructors and Destructor in C++
Constructors and Destructor in C++Constructors and Destructor in C++
Constructors and Destructor in C++
 
Storage classes in c++
Storage classes in c++Storage classes in c++
Storage classes in c++
 
Strings
StringsStrings
Strings
 
Inheritance in c++
Inheritance in c++Inheritance in c++
Inheritance in c++
 
Static Data Members and Member Functions
Static Data Members and Member FunctionsStatic Data Members and Member Functions
Static Data Members and Member Functions
 
Wrapper class
Wrapper classWrapper class
Wrapper class
 
C# classes objects
C#  classes objectsC#  classes objects
C# classes objects
 
Object-oriented Programming-with C#
Object-oriented Programming-with C#Object-oriented Programming-with C#
Object-oriented Programming-with C#
 
class and objects
class and objectsclass and objects
class and objects
 
Member Function in C++
Member Function in C++ Member Function in C++
Member Function in C++
 
Inline function
Inline functionInline function
Inline function
 
Union in C programming
Union in C programmingUnion in C programming
Union in C programming
 

Viewers also liked

Advanced data structures using c++ 3
Advanced data structures using c++ 3Advanced data structures using c++ 3
Advanced data structures using c++ 3
Shaili Choudhary
 
Data Structure
Data StructureData Structure
Data Structure
sheraz1
 

Viewers also liked (20)

Structured query language functions
Structured query language functionsStructured query language functions
Structured query language functions
 
Classes and objects1
Classes and objects1Classes and objects1
Classes and objects1
 
Advanced data structures using c++ 3
Advanced data structures using c++ 3Advanced data structures using c++ 3
Advanced data structures using c++ 3
 
Structured query language constraints
Structured query language constraintsStructured query language constraints
Structured query language constraints
 
13. Indexing MTrees - Data Structures using C++ by Varsha Patil
13. Indexing MTrees - Data Structures using C++ by Varsha Patil13. Indexing MTrees - Data Structures using C++ by Varsha Patil
13. Indexing MTrees - Data Structures using C++ by Varsha Patil
 
Pp
PpPp
Pp
 
Discrete Mathematics S. Lipschutz, M. Lipson And V. H. Patil
Discrete Mathematics S. Lipschutz, M. Lipson And V. H. PatilDiscrete Mathematics S. Lipschutz, M. Lipson And V. H. Patil
Discrete Mathematics S. Lipschutz, M. Lipson And V. H. Patil
 
Stacks in c++
Stacks in c++Stacks in c++
Stacks in c++
 
Working with Cookies in NodeJS
Working with Cookies in NodeJSWorking with Cookies in NodeJS
Working with Cookies in NodeJS
 
Data types in c++
Data types in c++Data types in c++
Data types in c++
 
16. Algo analysis & Design - Data Structures using C++ by Varsha Patil
16. Algo analysis & Design - Data Structures using C++ by Varsha Patil16. Algo analysis & Design - Data Structures using C++ by Varsha Patil
16. Algo analysis & Design - Data Structures using C++ by Varsha Patil
 
C++ data types
C++ data typesC++ data types
C++ data types
 
Data Structure
Data StructureData Structure
Data Structure
 
Data file handling in c++
Data file handling in c++Data file handling in c++
Data file handling in c++
 
10. Search Tree - Data Structures using C++ by Varsha Patil
10. Search Tree - Data Structures using C++ by Varsha Patil10. Search Tree - Data Structures using C++ by Varsha Patil
10. Search Tree - Data Structures using C++ by Varsha Patil
 
Stacks in algorithems & data structure
Stacks in algorithems & data structureStacks in algorithems & data structure
Stacks in algorithems & data structure
 
stacks in algorithems and data structure
stacks in algorithems and data structurestacks in algorithems and data structure
stacks in algorithems and data structure
 
Queues in C++
Queues in C++Queues in C++
Queues in C++
 
Structure of C++ - R.D.Sivakumar
Structure of C++ - R.D.SivakumarStructure of C++ - R.D.Sivakumar
Structure of C++ - R.D.Sivakumar
 
11. Hashing - Data Structures using C++ by Varsha Patil
11. Hashing - Data Structures using C++ by Varsha Patil11. Hashing - Data Structures using C++ by Varsha Patil
11. Hashing - Data Structures using C++ by Varsha Patil
 

Similar to Constructors and destructors

Constructor and desturctor
Constructor and desturctorConstructor and desturctor
Constructor and desturctor
Somnath Kulkarni
 
Chapter19 constructor-and-destructor
Chapter19 constructor-and-destructorChapter19 constructor-and-destructor
Chapter19 constructor-and-destructor
Deepak Singh
 
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptxCONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
DeepasCSE
 

Similar to Constructors and destructors (20)

Constructors & Destructors
Constructors  & DestructorsConstructors  & Destructors
Constructors & Destructors
 
C++Constructors
C++ConstructorsC++Constructors
C++Constructors
 
Lecture 4.2 c++(comlete reference book)
Lecture 4.2 c++(comlete reference book)Lecture 4.2 c++(comlete reference book)
Lecture 4.2 c++(comlete reference book)
 
C++ basic
C++ basicC++ basic
C++ basic
 
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCECONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
 
constructors.pptx
constructors.pptxconstructors.pptx
constructors.pptx
 
Bca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objectsBca 2nd sem u-2 classes & objects
Bca 2nd sem u-2 classes & objects
 
chapter-9-constructors.pdf
chapter-9-constructors.pdfchapter-9-constructors.pdf
chapter-9-constructors.pdf
 
Mca 2nd sem u-2 classes & objects
Mca 2nd  sem u-2 classes & objectsMca 2nd  sem u-2 classes & objects
Mca 2nd sem u-2 classes & objects
 
Constructor and desturctor
Constructor and desturctorConstructor and desturctor
Constructor and desturctor
 
Class and object
Class and objectClass and object
Class and object
 
5 Constructors and Destructors
5 Constructors and Destructors5 Constructors and Destructors
5 Constructors and Destructors
 
Chapter19 constructor-and-destructor
Chapter19 constructor-and-destructorChapter19 constructor-and-destructor
Chapter19 constructor-and-destructor
 
Constructors and Destructors
Constructors and DestructorsConstructors and Destructors
Constructors and Destructors
 
Object Oriented Programming using C++: Ch11 Virtual Functions.pptx
Object Oriented Programming using C++: Ch11 Virtual Functions.pptxObject Oriented Programming using C++: Ch11 Virtual Functions.pptx
Object Oriented Programming using C++: Ch11 Virtual Functions.pptx
 
Constructors in C++.pptx
Constructors in C++.pptxConstructors in C++.pptx
Constructors in C++.pptx
 
Object & classes
Object & classes Object & classes
Object & classes
 
Java basic understand OOP
Java basic understand OOPJava basic understand OOP
Java basic understand OOP
 
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptxCONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
CONSTRUCTORS, DESTRUCTORS AND OPERATOR OVERLOADING.pptx
 
constructors and destructors
constructors and destructorsconstructors and destructors
constructors and destructors
 

Recently uploaded

678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
CarlosHernanMontoyab2
 
plant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated cropsplant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated crops
parmarsneha2
 

Recently uploaded (20)

How to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERPHow to Create Map Views in the Odoo 17 ERP
How to Create Map Views in the Odoo 17 ERP
 
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptxJose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
Jose-Rizal-and-Philippine-Nationalism-National-Symbol-2.pptx
 
NLC-2024-Orientation-for-RO-SDO (1).pptx
NLC-2024-Orientation-for-RO-SDO (1).pptxNLC-2024-Orientation-for-RO-SDO (1).pptx
NLC-2024-Orientation-for-RO-SDO (1).pptx
 
678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf678020731-Sumas-y-Restas-Para-Colorear.pdf
678020731-Sumas-y-Restas-Para-Colorear.pdf
 
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxStudents, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptx
 
Synthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptxSynthetic Fiber Construction in lab .pptx
Synthetic Fiber Construction in lab .pptx
 
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
Palestine last event orientationfvgnh .pptx
Palestine last event orientationfvgnh .pptxPalestine last event orientationfvgnh .pptx
Palestine last event orientationfvgnh .pptx
 
The approach at University of Liverpool.pptx
The approach at University of Liverpool.pptxThe approach at University of Liverpool.pptx
The approach at University of Liverpool.pptx
 
Basic Civil Engineering Notes of Chapter-6, Topic- Ecosystem, Biodiversity G...
Basic Civil Engineering Notes of Chapter-6,  Topic- Ecosystem, Biodiversity G...Basic Civil Engineering Notes of Chapter-6,  Topic- Ecosystem, Biodiversity G...
Basic Civil Engineering Notes of Chapter-6, Topic- Ecosystem, Biodiversity G...
 
Fish and Chips - have they had their chips
Fish and Chips - have they had their chipsFish and Chips - have they had their chips
Fish and Chips - have they had their chips
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI BUỔI 2) - TIẾNG ANH 8 GLOBAL SUCCESS (2 CỘT) N...
 
INU_CAPSTONEDESIGN_비밀번호486_업로드용 발표자료.pdf
INU_CAPSTONEDESIGN_비밀번호486_업로드용 발표자료.pdfINU_CAPSTONEDESIGN_비밀번호486_업로드용 발표자료.pdf
INU_CAPSTONEDESIGN_비밀번호486_업로드용 발표자료.pdf
 
Introduction to Quality Improvement Essentials
Introduction to Quality Improvement EssentialsIntroduction to Quality Improvement Essentials
Introduction to Quality Improvement Essentials
 
Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345Sha'Carri Richardson Presentation 202345
Sha'Carri Richardson Presentation 202345
 
Instructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptxInstructions for Submissions thorugh G- Classroom.pptx
Instructions for Submissions thorugh G- Classroom.pptx
 
Benefits and Challenges of Using Open Educational Resources
Benefits and Challenges of Using Open Educational ResourcesBenefits and Challenges of Using Open Educational Resources
Benefits and Challenges of Using Open Educational Resources
 
Home assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdfHome assignment II on Spectroscopy 2024 Answers.pdf
Home assignment II on Spectroscopy 2024 Answers.pdf
 
Basic_QTL_Marker-assisted_Selection_Sourabh.ppt
Basic_QTL_Marker-assisted_Selection_Sourabh.pptBasic_QTL_Marker-assisted_Selection_Sourabh.ppt
Basic_QTL_Marker-assisted_Selection_Sourabh.ppt
 
plant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated cropsplant breeding methods in asexually or clonally propagated crops
plant breeding methods in asexually or clonally propagated crops
 

Constructors and destructors

  • 2. CONSTRUCTORS A member function with the same as its class is called Constructor and it is used to initialize the object of that class with a legal initial value. Example : class student { private: int rollno; float marks; public: student( ) //Constructor { rollno=0; marks=0.0; } };
  • 3. CONSTRUCTOR CALLING A constructor can be called in two ways: implicitly and explicitly. class student { private: int rollno; float marks; public: student( ) //Constructor { rollno=0; marks=0.0; } }; void main() { student s1; //implicit call } class student { private: int rollno; float marks; public: student( ) //Constructor { rollno=0; marks=0.0; } }; void main() { student s1 = student(); //explicit call } IMPLICIT CALL OF CONSTRUCTOR EXPLICIT CALL OF CONSTRUCTOR
  • 4. FEATURES OF CONSTRUCTORS  Constructor has the same name as class.  Constructor does not have any return type not even void.  Constructor can be declared only in the public section of the class.  Constructor is called automatically when the object of the class is created.
  • 5. TYPES OF CONSTRUCTOR 1. Default Constructor: A constructor that accepts no parameter is called the Default Constructor. 2. Parameterized Constructor: A constructor that accepts parameters for its invocation is known as parameterized Constructor, also called as Regular Constructor. 3. Copy Constructor: A copy constructor is a special constructor in the C++ programming language used to create a new object as a copy of an existing object.
  • 6. Example : class student { private: int rollno; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; } void display(); void enter(); }; void main() { student s1; // default constructor called } DEFAULT CONSTRUCTOR Default constructor takes no argument. It is used to initialize an object of a class with legal initial values.
  • 7. PARAMETRISED CONSTRUCTOR  Parametrized constructor accepts arguments.  It initializes the data members of the object with the arguments passed to it.  When the object s1 is created, default constructor is called and when the objects s2 is created, parametrized constructor is called and this is implicit call of parametrized constructor.  When the object s3 is created, again the parametrized constructor is called but this explicit call of parametrized constructor. class student { private: int rollno; char name[20]; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; } student(int roll, char nam[20], float mar) // Parametrized Constructor { rollno=roll; strcpy(name, nam); marks =mar; } void display(); void enter(); }; void main() { student s1; student s2(1, “RAMESH”, 350); student s3=student(2, ”KAJAL”, 400); }
  • 8. COPY CONSTRUCTOR  Copy constructor accepts an object as an argument.  It creates a new object and initializes its data members with data members of the object passed to it as an argument. Syntax : class_name( class_name & object_name) { } Note: It is necessary to pass an object by reference in copy constructor because if do not pass the object by reference then a copy constructor will be invoked to make the copy of the object. In this process copy constructor will be invoked again and it will be a recursive process ie this process will repeat again and again endlessly resulting in running short of memory. Ultimately our system will hang.
  • 9. COPY CONSTRUCTOR EXAMPLE Example : Statement1: default constructor is called. Statement2: parametrized constructor is called. Statement 3: copy constructor is called. Statement4: Parametrized constructor is called. statement5: Copy constructor is called. class student { private: int rollno; char name[20]; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; } student(int roll, char nam[20], float mar) // Parametrized Constructor { rollno=roll; strcpy(name, nam); marks =mar; } student( student & s) // Copy Constructor { rollno= s.rollno; strcpy(name, s.name); marks =s.marks; } } void main() { student s1; //statement1 student s2( 1, “RAJESH”, 450); // statemet2 student s3(s2); //statement3 student s4(2, “MOHIT”,320); //statement4 student s5=s4; //statement5 }
  • 10. COPY CONSTRUCTOR INVOCATION Case 1: When an object is passed by value to a function: The pass by value method requires a copy of the passed argument to be created for the function to operate upon. Thus to create the copy of the passed object, copy constructor is invoked. Example: Explanation: As we are passing the object s6 by value so when the function call job is invoked a copy of stu is created and values of object s6 are copied to object stu. class student { private: int rollno; char name[20]; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; } student(int roll, char nam[20], float mar) //Parametrized { rollno=roll; strcpy(name, nam); marks =mar; } student( student & s) // Copy Constructor { rollno= s.rollno; strcpy(name, s.name); marks =s.marks; } } void job( student stu) { } void main( ) { student s6(6, “KAPIL”, 245); job(s6); }
  • 11. COPY CONSTRUCTOR INVOCATION Contd….. Case 2: When a function returns an object : When an object is returned by a function the copy constructor is invoked. Explanation:  When the function job is invoked it creates a temporary object t1 and then returns it.  At that time the copy constructor is invoked to create a copy of the object t1 returned by job() and its value is assigned to s7.  The copy constructor creates a temporary object to hold the return value of a function returning an object. class student { private: int rollno; char name[20]; float marks; public: student( ) // Default { rollno=0; marks=0.0; } student(int roll, char nam[20], float mar) // Parametrised { rollno=roll; strcpy(name, nam); marks =mar; } student( student & s) // Copy Constructor { rollno= s.rollno; strcpy(name, s.name); marks =s.marks; } } student job( ) { student t1(12, “AJAY”, 443); return t1; } void main( ) { student s6(6, “KAPIL”, 245); student s7=job(); }
  • 12. COPY CONSTRUCTOR INVOCATION Contd….. Case 3: Copy constructor is invoked when the value of one object is copied to another object at the time of creating an object. In all the other cases copy constructor is not invoked and value of one object is copied to another object simply data member by data member. Example : EXPLANATION: Statement1: default constructor is called Statement2: parametrized constructor is called Statement 3: copy constructor is called statement4: Parametrized constructor is called statement5: Copy constructor is called statement6: Copy constructor is not called class student { private: int rollno; char name[20]; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; } student(int roll, char nam[20], float mar) // Parametrized Constructor { rollno=roll; strcpy(name, nam); marks =mar; } student( student & s) // Copy Constructor { rollno= s.rollno; strcpy(name, s.name); marks =s.marks; } } void main() { student s1; //statement1 student s2( 1, “RAJESH”, 450); // statemet2 student s3(s2); //statement3 student s4(2, “MOHIT”,320); //statement4 Student s5=s4; //statement5 s1=s5; } // statement6
  • 13. CONSTRUCTOR OVERLOADING C++ allows more than one constructors to be defined in a single class. Defining more than one constructors in a single class provided they all differ in either type or number of argument is called constructor overloading.  In the class student, there are 4 constructors: 1 default constructor, 2 parametrized constructors and 1 copy constructor.  Defining more than one constructor in a single class is called constructor overloading.  We can define as many parametrized constructors as we want in a single class provided they all differ in either number or type of arguments. class student { private: int rollno; char name[20]; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; } student(int roll, char nam[20], float mar) // Parametrized Constructor { rollno=roll; strcpy(name, nam); marks =mar; } student(int roll, char nam[20]) // Parametrized Constructor { rollno=roll; strcpy(name, nam); marks =100; } student( student & s) // Copy Constructor { rollno= s.rollno; strcpy(name, s.name); marks =s.marks; } }
  • 14. DESTRUCTOR  A destructor is a member function whose name is the same as the class name and is preceded by tilde(“~”).  It is automatically by the compiler when an object goes out of scope.  Destructors are usually used to deallocate memory and do other cleanup for a class object and its class members when the object is destroyed.  Note: In this program first the object s1 is created. At that time constructor is called. When the program goes over the object s1 will also go out of scope. At that time destructor is called. Example : class student { private: int rollno; float marks; public: student( ) //Constructor { rollno=0; marks=0.0; } ~student() //Destructor { } }; void main() { student s1;}
  • 15. FEATURES OF DESTRUCTOR It has the same name as that of the class and preceded by tilde sign(~). It is automatically by the compiler when an object goes out of scope. Destructors are usually used to deallocate memory and do other cleanup for a class object and its class members when the object goes out of scope. Destructor is always declared in the public section of the class. We can have only one destructor in a class.
  • 16. POINTS TO REMEMBER Constructors and destructors do not have return type, not even void nor can they return values. The compiler automatically calls constructors when defining class objects and calls destructors when class objects go out of scope. Derived classes do not inherit constructors or destructors from their base classes, but they do call the constructor and destructor of base classes. The constructor of the base class is called first and then the constructor of the child class/es. The destructor for a child class object is called before destructors for base class/es are called. If we do not declare our own constructor and destructor in the class, then they are automatically defined by the compiler.
  • 17. POINTS TO REMEMBER Contd……  I f we declare our own constructor of any one type then it is necessary to define constructors of other types also otherwise we will not be able to create an object whose constructor definition is not given in the class.  C++ compiler uses the concept of stack in memory allocation and deallocation. Thus compiler creates the memory in sequential order and delete the memory in reverse order. Deallocation Allocation x3 x2 x1 Consider the class student declared in the previous slides. If the main program is as given below then allocation and deallocation of memory to objects will take place as given in the figure:: void main() { student x1, x2, x3; } x1 x2 x3
  • 18. EXAMPLE EXPLAINED OUTPUT Default constructor called Parametrized constructor called Copy constructor called Parametrized constructor called Copy constructor called Destructor called Destructor called Destructor called Destructor called Destructor called class student { private: int rollno; char name[20]; float marks; public: student( ) // Default Constructor { rollno=0; marks=0.0; cout<<“Default constructor calledn”; } student(int roll, char nam[20], float mar) // Parametrized Constructor { rollno=roll; strcpy(name, nam); marks =mar; cout<<“Parametrized constructor calledn”; } student( student & s) // Copy Constructor { rollno= s.rollno; strcpy(name, s.name); marks =s.marks; cout<<“copy constructor calledn”; } ~student() //Destructor { cout<<“Destructor calledn”; } } void main() { student s1; student s2( 1, “RAJESH”, 450); student s3(s2); student s4(2, “MOHIT”,320); student s5=s4; }