Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member...
Transcript of Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member...
![Page 1: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/1.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Constructors for classes
Comp Sci 1570 Introduction to C++
![Page 2: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/2.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 3: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/3.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
C++ supports several basic ways to initialize
i n t nValue ; // d e c l a r e but not d e f i n enValue = 5 ; // a s s i g n
i n t nValue = 5 ; // copy i n i t i a l i z a t i o n
i n t nValue ( 5 ) ; // d i r e c t i n i t i a l i z a t i o n
i n t v a l u e {5} ; // un i fo rm i n i t . (C++ 11 on l y )
MyClass m y o b j e c t ; // d e c l a r e but not d e f i n e// i n i t i a l i z a t i o n ?
Even though direct initialization form looks a lot like a functioncall, the compiler keeps track of which names are variables andwhich are functions. Direct initialization can perform betterthan copy initialization for some data types. It also helpsdifferentiate initialization from assignment.
![Page 4: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/4.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 5: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/5.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Constructors
To be able to initialize your user-defined types, you must writea special kind of member function for your class. It is called aconstructor. Constructors are really rather special in that theyhave some key features:
• Constructors are always named the name of the class(with the same capitalization)
• Constructors have no return type (not even void) andhence has no return statement.
• Constructors can be overloaded like any other function,and you will most likely do so.
• Constructors are called by the compiler automatically; theyare rarely called explicitly by the programmer.
• If you write no constructor, the compiler will provide yourclass with a default constructor. The mechanism issuppressed once you write any constructor.
![Page 6: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/6.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 7: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/7.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 8: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/8.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Default constructor
A constructor that accepts no parameters is known as defaultconstructor. If no constructor is defined then the compilersupplies a default constructor.
. . .
C i r c l e : : C i r c l e ( ){
r a d i u s = 0 ;}
i n t main ( ){C i r c l e m y c i r c l e ;m y c i r c l e . r a d i u s =4;
. . .
![Page 9: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/9.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 10: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/10.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Parameterized constructor
A constructor that receives arguments/parameters, is calledparameterized constructor.
. . .
C i r c l e : : C i r c l e ( double r ){
r a d i u s = r ;}
i n t main ( ){C i r c l e m y c i r c l e ( 4 ) ;
. . .
![Page 11: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/11.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 12: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/12.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Copy constructor
A constructor that initializes an object using values of anotherobject passed to it as parameter, is called copy constructor. Itcreates the copy of the passed object.
. . .
C i r c l e : : C i r c l e ( C i r c l e &o t h e r C i r c l e ){
r a d i u s = o t h e r C i r c l e . r a d i u s ;}
i n t main ( ){C i r c l e m y c i r c l e ( 4 ) ;C i r c l e m y c i r c l e 2 ( m y c i r c l e ) ;
. . .
![Page 13: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/13.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 14: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/14.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Destructors
A destructor is a member function having sane name as that ofits class preceded by (tilde) sign and which is used to destroythe objects that have been created by a constructor. It getsinvoked when an object’s scope is over.
˜ C i r c l e ( ) {}
We don’t cover these this semester
![Page 15: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/15.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 16: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/16.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Overloading constructors
Like any other function, a constructor can also be overloadedwith different versions taking different parameters: with adifferent number of parameters and/or parameters of differenttypes. The compiler will automatically call the one whoseparameters match the arguments
![Page 17: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/17.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 18: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/18.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Member initialization lists
• When a constructor is used to initialize other members,these other members can be initialized directly, withoutresorting to statements in its body, by inserting, before theconstructor’s body, a colon (:) and a list of initializationsfor class members.
• For members that cannot be default-initialized, such asmembers of reference and const-qualified types, memberinitializers must be specified.
• If non-static const data members in your class have defaultconstructors and you don’t use a constructor initializer list,you won’t be able to initialize them to intended state asthey will be initialized to their default state.
• Reference data members must be intialized when compilerenters constructor as references can’t be just declared &initialized later. This is possible only with constructorinitializer list.
• Efficiency: rather than calling default init just to overwritelater, initialize directly
![Page 19: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/19.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Member initialization lists
c l a s s R e c t a n g l e{
i n t width , h e i g h t ;pub l i c :
R e c t a n g l e ( int , i n t ) ;i n t a r e a ( ){ return width ∗ h e i g h t ;}
} ;
R e c t a n g l e : : R e c t a n g l e ( i n t x , i n t y ){width=x ; h e i g h t=y ;}// orR e c t a n g l e : : R e c t a n g l e ( i n t x , i n t y ) : w idth ( x ){ h e i g h t=y ;}// orR e c t a n g l e : : R e c t a n g l e ( i n t x , i n t y ) :w idth ( x ) , h e i g h t ( y ){ }
![Page 20: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/20.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 21: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/21.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 22: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/22.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Copy constructor
c l a s s MyClass{
pub l i c :i n t a , b ; s t r i n g c ;
} ;
MyClass : : MyClass ( const MyClass& e x i s t i n g O b j ) :a ( x . a ) , b ( x . b ) , c ( x . c ) {}
i n t main ( ){MyClass
. . .
![Page 23: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/23.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 24: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/24.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Operator= provided by default (copy assignment)
MyClass f o o ;
// ob j e c t i n i t i a l i z a t i o n : copy c o n s t r u c t o rMyClass bar ( f o o ) ;
// ob j e c t i n i t i a l i z a t i o n : copy c o n s t r u c t o rMyClass baz = f o o ;
// ob j e c t a l r e a d y i n i t i a l i z e d : copy as s i gnmentf o o = bar ;
Body of overloading function is similar to copy constructor
![Page 25: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/25.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Outline
1 Initialization review
2 Definitions
3 Types of constructorDefaultParameterizedCopyDestructors
4 Overloading constructors
5 Member initialization lists
6 Initialize from existing objectCopy constructorOperator=
7 Classes in classes
![Page 26: Constructors for classes · Default Parameterized Copy Destructors Overloading constructors Member initialization lists Initialize from existing object Copy constructor Operator=](https://reader030.fdocuments.net/reader030/viewer/2022040616/5f11ab0c536db01cf17b2f57/html5/thumbnails/26.jpg)
Initializationreview
Definitions
Types ofconstructor
Default
Parameterized
Copy
Destructors
Overloadingconstructors
Memberinitializationlists
Initialize fromexisting object
Copy constructor
Operator=
Classes inclasses
Classes in classes
• A class may contain other classes as member variables.
• By default, when the outer class is constructed, themember variables will have their default constructorscalled.
• This happens before the body of the constructor executes.