SlideShare a Scribd company logo
CONSTRUCTORS
&
DESTRUCTORS
#109 Rimsha Nasrallah
#118 shamsa Nawaz
#139 Sana Khalid
Constructors
• C++ requires a construct call for each object it has created
• This ensure that object is initialized properly before it is used
• If there is no constructor, the compiler provides a default constructor that is, a
constructor with no parameters
• Name of constructor function is same as name of class
A counter example
• Data member
• Count
• Member function
• Constructor
• void inc_count()
• int get_count()
Automatic initialization
• An object of type Counter is first created, we want its count to be
initialized to 0
• Options are
• set_count() function (call it with an argument of 0)
• zero_count() function, to set count to 0.
• Such functions would need to be executed every time we created a
Counter object
Cont.
• A programmer may forget to initialize the object after creating it
• It’s more reliable and convenient to cause each object to initialize implicitly when
it is created
• In the Counter class, the constructor Counter() is called automatically whenever a
new object of type Counter is created
• Counter c1, c2;
creates two objects. Constructor is called with each object separately
Constructor Name
• First, constructor name must be same as the name of class
• This is one way the compiler knows they are constructors
• Second, no return type is used for constructors
• Why not? Since the constructor is called automatically by the system, there’s no
program for it to return anything to; a return value wouldn’t make sense
• This is the second way the compiler knows they are constructors
Initializer List
• One of the most common tasks a constructor carries out is initializing data members
• In the Counter class the constructor must initialize the count member to 0
• The initialization takes place following the member function declarator but before the function body.
• Initialization in constructor’s function body
Counter()
{ count = 0; }
this is not the preferred approach
Cont.
• It’s preceded by a colon.The value is placed in parentheses following the member
data.
Counter() : count(0)
{ }
• If multiple members must be initialized, they’re separated by commas.
• someClass() : m1(7), m2(33), m3(4) ←initializer list { }
Destructors
• Destructor is a function called implicitly when an object is destroyed
• The name of the destructor for a class is the tilde character (~) followed by the
class name
• No arguments and no return type for a destructor
• The most common use of destructors is to deallocate memory that was allocated
for the object by the constructor
Validating Data with set Functions
• A set function should validate the value before assigning to private data member
• Set function can return a value or may display a message if invalid data is assign to
object
Constructor with default arguments
Objects as Function Arguments
class Distance { //Distance class
private:
int feet;
float inches;
public:
Distance() : feet(0), inches(0.0)
{ }
Distance(int ft, float in) : feet(ft), inches(in)
{ }
void getdist(){
cout << “nEnter feet: “; cin >> feet;
cout << “Enter inches: “; cin >> inches;
}
void showdist(){
cout << feet << “:” << inches<<endl ;
}
void add_dist( Distance, Distance );
};
void Distance::add_dist(Distance d2,
Distance d3) {
inches = d2.inches + d3.inches;
feet = 0;
if(inches >= 12.0) {
inches -= 12.0;
feet++;
}
feet += d2.feet + d3.feet;
}
main()
{
Distance dist1, dist3;
Distance dist2(11, 6.5);
dist1.getdist();
dist3.add_dist(dist1, dist2);
cout << “ndist1 = “; dist1.showdist();
cout << “ndist2 = “; dist2.showdist();
cout << “ndist3 = “; dist3.showdist();
}
feet
inches
dist1
0
0.0
`feet
inches
dist3
0
0.0
feet
inches
dist2
11
6.5
5
7.0
feet
inches
d1
feet
inches
d2
5
7.0
11
6.5
13.5
0
1.5
117
main()
{
Distance dist1, dist3;
Distance dist2(11, 6.5);
dist1.getdist();
dist3.add_dist(dist1, dist2);
cout << “ndist1 = “; dist1.showdist();
cout << “ndist2 = “; dist2.showdist();
cout << “ndist3 = “; dist3.showdist();
}
void getdist(){
cout << “nEnter feet: “; cin >> feet;
cout << “Enter inches: “; cin >> inches;
}
void Distance::add_dist(Distance d1, Distance d2) {
inches = d1.inches + d2.inches;
feet = 0;
if(inches >= 12.0) {
inches -= 12.0;
feet++;
}
feet += d1.feet + d2.feet;
}
void showdist(){
cout << feet << “:” << inches<<endl ;
}
dist1 = 5 : 7.0
dist2 = 11 : 6.5
dist3 = 17 : 1.5
Overloaded Constructors
• It’s convenient to be able to give variables of type Distance a
value when they are first created
Distance dist2(11, 6.25);
• which defines an object, and initializes it to a value of 11 for feet
and 6.25 for inches.
• Distance dist1, dist2; then No-argument constructor is
called/invoked (the default constructor)
• Since there are now two constructors with the same name,
Distance(), we say the constructor is overloaded
Member Functions Defined Outside the
Class
• Such functions, needs to have a prototype/declaration within the
class
• The function name, add_dist(), is preceded by the class name,
Distance, and a new symbol—the double colon (::).This symbol is
called the scope resolution operator.
• It is a way of specifying what class something is associated with
• In this situation, Distance::add_dist() means “the add_dist() member
function of the Distance class”
void Distance::add_dist(Distance d2, Distance d3)
Questions??

More Related Content

PDF
Angular and The Case for RxJS
PDF
Oop assignment 02
PPTX
PDF
How to Create a l10n Payroll Structure
PDF
Introduction to JQ
PDF
jq: JSON - Like a Boss
PPTX
Angular2 rxjs
PDF
Asynchronous JS in Odoo
Angular and The Case for RxJS
Oop assignment 02
How to Create a l10n Payroll Structure
Introduction to JQ
jq: JSON - Like a Boss
Angular2 rxjs
Asynchronous JS in Odoo

What's hot (20)

PPTX
Rxjs ngvikings
PDF
Map kit light
PDF
Monads in Swift
PPTX
Java script
PDF
Cocoa heads 09112017
PPTX
LinkedIn TBC JavaScript 100: Functions
PPT
Expert JavaScript tricks of the masters
PPTX
Rxjs swetugg
PDF
React hooks beyond hype
PDF
Bindings: the zen of montage
PDF
Introduction to RxJS
PDF
React new features and intro to Hooks
PPTX
iOS Beginners Lesson 4
PDF
Rxjs vienna
PDF
Deep Dive into React Hooks
PPTX
SQL Functions
PDF
Douglas Crockford: Serversideness
PDF
Advanced functional programing in Swift
PDF
Functional Core, Reactive Shell
PDF
ReactiveCocoa in Practice
Rxjs ngvikings
Map kit light
Monads in Swift
Java script
Cocoa heads 09112017
LinkedIn TBC JavaScript 100: Functions
Expert JavaScript tricks of the masters
Rxjs swetugg
React hooks beyond hype
Bindings: the zen of montage
Introduction to RxJS
React new features and intro to Hooks
iOS Beginners Lesson 4
Rxjs vienna
Deep Dive into React Hooks
SQL Functions
Douglas Crockford: Serversideness
Advanced functional programing in Swift
Functional Core, Reactive Shell
ReactiveCocoa in Practice
Ad

Similar to Oop presentation (20)

PPTX
constructocvbcvbcvbcvbr-Destructor (1).pptx
PPT
Friend this-new&delete
PPTX
Object orinted programming lecture| Overlaoded Functions
PPTX
OOP.pptx
PPT
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
PPTX
C++ process new
PPTX
constructorsfjy5ediykEASFul;IUWORHusi;gfb.pptx
PPT
Oop lec 5-(class objects, constructor & destructor)
PPT
Constructors & Destructors in C++ Simplified
PPTX
C++11: Feel the New Language
ODP
C++ Secure Programming
PPT
Constructor and destructor in C++
PPT
Constructors and destructors in C++ part 2
PPT
lecture56functionsggggggggggggggggggg.ppt
PPTX
C++ Functions.pptx
PPT
Oops lecture 1
PPT
lecture56.ppt
PPTX
An introduction to Constructors and destructors in c++ .pptx
ZIP
PPT
data Structure Lecture 1
constructocvbcvbcvbcvbr-Destructor (1).pptx
Friend this-new&delete
Object orinted programming lecture| Overlaoded Functions
OOP.pptx
CONSTRUCTORS IN C++ +2 COMPUTER SCIENCE
C++ process new
constructorsfjy5ediykEASFul;IUWORHusi;gfb.pptx
Oop lec 5-(class objects, constructor & destructor)
Constructors & Destructors in C++ Simplified
C++11: Feel the New Language
C++ Secure Programming
Constructor and destructor in C++
Constructors and destructors in C++ part 2
lecture56functionsggggggggggggggggggg.ppt
C++ Functions.pptx
Oops lecture 1
lecture56.ppt
An introduction to Constructors and destructors in c++ .pptx
data Structure Lecture 1
Ad

Recently uploaded (20)

PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
GDM (1) (1).pptx small presentation for students
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PDF
Module 4: Burden of Disease Tutorial Slides S2 2025
PDF
O7-L3 Supply Chain Operations - ICLT Program
PDF
RMMM.pdf make it easy to upload and study
PDF
Complications of Minimal Access Surgery at WLH
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
Insiders guide to clinical Medicine.pdf
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PPTX
Pharma ospi slides which help in ospi learning
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Microbial disease of the cardiovascular and lymphatic systems
GDM (1) (1).pptx small presentation for students
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
2.FourierTransform-ShortQuestionswithAnswers.pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Module 4: Burden of Disease Tutorial Slides S2 2025
O7-L3 Supply Chain Operations - ICLT Program
RMMM.pdf make it easy to upload and study
Complications of Minimal Access Surgery at WLH
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Renaissance Architecture: A Journey from Faith to Humanism
STATICS OF THE RIGID BODIES Hibbelers.pdf
VCE English Exam - Section C Student Revision Booklet
Insiders guide to clinical Medicine.pdf
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Final Presentation General Medicine 03-08-2024.pptx
Pharma ospi slides which help in ospi learning

Oop presentation

  • 2. Constructors • C++ requires a construct call for each object it has created • This ensure that object is initialized properly before it is used • If there is no constructor, the compiler provides a default constructor that is, a constructor with no parameters • Name of constructor function is same as name of class
  • 3. A counter example • Data member • Count • Member function • Constructor • void inc_count() • int get_count()
  • 4. Automatic initialization • An object of type Counter is first created, we want its count to be initialized to 0 • Options are • set_count() function (call it with an argument of 0) • zero_count() function, to set count to 0. • Such functions would need to be executed every time we created a Counter object
  • 5. Cont. • A programmer may forget to initialize the object after creating it • It’s more reliable and convenient to cause each object to initialize implicitly when it is created • In the Counter class, the constructor Counter() is called automatically whenever a new object of type Counter is created • Counter c1, c2; creates two objects. Constructor is called with each object separately
  • 6. Constructor Name • First, constructor name must be same as the name of class • This is one way the compiler knows they are constructors • Second, no return type is used for constructors • Why not? Since the constructor is called automatically by the system, there’s no program for it to return anything to; a return value wouldn’t make sense • This is the second way the compiler knows they are constructors
  • 7. Initializer List • One of the most common tasks a constructor carries out is initializing data members • In the Counter class the constructor must initialize the count member to 0 • The initialization takes place following the member function declarator but before the function body. • Initialization in constructor’s function body Counter() { count = 0; } this is not the preferred approach
  • 8. Cont. • It’s preceded by a colon.The value is placed in parentheses following the member data. Counter() : count(0) { } • If multiple members must be initialized, they’re separated by commas. • someClass() : m1(7), m2(33), m3(4) ←initializer list { }
  • 9. Destructors • Destructor is a function called implicitly when an object is destroyed • The name of the destructor for a class is the tilde character (~) followed by the class name • No arguments and no return type for a destructor • The most common use of destructors is to deallocate memory that was allocated for the object by the constructor
  • 10. Validating Data with set Functions • A set function should validate the value before assigning to private data member • Set function can return a value or may display a message if invalid data is assign to object
  • 12. Objects as Function Arguments class Distance { //Distance class private: int feet; float inches; public: Distance() : feet(0), inches(0.0) { } Distance(int ft, float in) : feet(ft), inches(in) { } void getdist(){ cout << “nEnter feet: “; cin >> feet; cout << “Enter inches: “; cin >> inches; } void showdist(){ cout << feet << “:” << inches<<endl ; } void add_dist( Distance, Distance ); }; void Distance::add_dist(Distance d2, Distance d3) { inches = d2.inches + d3.inches; feet = 0; if(inches >= 12.0) { inches -= 12.0; feet++; } feet += d2.feet + d3.feet; } main() { Distance dist1, dist3; Distance dist2(11, 6.5); dist1.getdist(); dist3.add_dist(dist1, dist2); cout << “ndist1 = “; dist1.showdist(); cout << “ndist2 = “; dist2.showdist(); cout << “ndist3 = “; dist3.showdist(); }
  • 13. feet inches dist1 0 0.0 `feet inches dist3 0 0.0 feet inches dist2 11 6.5 5 7.0 feet inches d1 feet inches d2 5 7.0 11 6.5 13.5 0 1.5 117 main() { Distance dist1, dist3; Distance dist2(11, 6.5); dist1.getdist(); dist3.add_dist(dist1, dist2); cout << “ndist1 = “; dist1.showdist(); cout << “ndist2 = “; dist2.showdist(); cout << “ndist3 = “; dist3.showdist(); } void getdist(){ cout << “nEnter feet: “; cin >> feet; cout << “Enter inches: “; cin >> inches; } void Distance::add_dist(Distance d1, Distance d2) { inches = d1.inches + d2.inches; feet = 0; if(inches >= 12.0) { inches -= 12.0; feet++; } feet += d1.feet + d2.feet; } void showdist(){ cout << feet << “:” << inches<<endl ; } dist1 = 5 : 7.0 dist2 = 11 : 6.5 dist3 = 17 : 1.5
  • 14. Overloaded Constructors • It’s convenient to be able to give variables of type Distance a value when they are first created Distance dist2(11, 6.25); • which defines an object, and initializes it to a value of 11 for feet and 6.25 for inches. • Distance dist1, dist2; then No-argument constructor is called/invoked (the default constructor) • Since there are now two constructors with the same name, Distance(), we say the constructor is overloaded
  • 15. Member Functions Defined Outside the Class • Such functions, needs to have a prototype/declaration within the class • The function name, add_dist(), is preceded by the class name, Distance, and a new symbol—the double colon (::).This symbol is called the scope resolution operator. • It is a way of specifying what class something is associated with • In this situation, Distance::add_dist() means “the add_dist() member function of the Distance class” void Distance::add_dist(Distance d2, Distance d3)