constructor_destructor

Views:
 
Category: Education
     
 

Presentation Description

No description available.

Comments

Presentation Transcript

Constructor & Destructor: 

Constructor & Destructor Design by groups 16

Constructors: 

Constructors Def- A constructor is a special member function that is a member of a class and has same name as that class. Use- It is used to initialize the object of the class type with a legal initial value.

Special Characteristics of Constructors: 

Special Characteristics of Constructors These are called automatically when the objects are created. All the objects of the class having a constructor are initialized before some use. These should be declared in the public section for availability to all the functions. Constructor has no return type even void. They can not be inherited. These cannot be static. Default and copy constructor are generated by the compiler whenever required. Generated constructors are public. Constructors can have default argument as other C++ functions.

Declaration and Definition: 

Declaration and Definition It can be defined either inside the class definition or outside the class definition class X { int i ; public: int j,k ; X() { i = j = k =0;} };

Slide 5: 

class X { int i ; public: int j,k ; X() { i = j = k =0;} }; X::X() { I = j = k =0; }

Note: 

Note Generally a constructor should be defined under the public section of a class, so that its object can be created in any function

Slide 7: 

class X { int i ; X() { i = j = k =0;} public: int j,k ; void check(void); // member function }; void X :: check (void) { X obj1; //valid } int main() { X obj2; //invalid }

Default constructor: 

Default constructor A constructor that accept no parameter is called the default constructor.

Copy Constructor: 

Copy Constructor A copy Constructor is used to initialize an object from another object. If you have not defined a copy constructor, the complier automatically creates it and it is public Copy constructor always takes argument as a reference object. Consider the following class definition

Slide 10: 

class sample { int i, j; public: sample ( int a, int b) { i = a; j = b; } sample ( sample & s) { i = s.i ; j = s.j ; } void print(void) { cout<<i <<“ “<<j <<“\n”; } Above constructors may be used as follows sample s1 (10,12); //1 st const. called sample s2 (s1) // copy const. called sample s3 = s1; copy const. called

Home work: 

Home work In a class does not define a constructor, what will be the initial value of its object. What are the significance of default constructor. How many situations when a copy constructor is automatically called.

Default Arguments: 

Default Arguments Just like any other function a constructor can also have default arguments This constructor is equivalent to default constructor. Because its also allows us to create objects without any value provided. For example

Slide 13: 

class A { int i,j; public: X(int x=10,int y=20); }; A::X(int x,int y) { i=x; j = y; } int main() { A obj1; A obj2(250); A obj3(2,4); getch(); return 0; } i=10 j=20 i=250 j=20 i=2 j=4 obj1 obj2 obj3

Order of Constructor Invocation: 

Order of Constructor Invocation The objects are constructed in the order they are defined. Consider the following statement Sample s1,s2,s3; // the order of construction is s1,s2,s3. But when a class containing objects of another class as its members. In such a case, the constructor for member objects are invoked first and then only, the constructor for containing class is invoked. For example

Slide 15: 

class A { public: A() { cout<<“Constructing A” <<endl; }}; class B { public: B() { cout<<“Constructing B” <<endl; }}; class C { private: A objA; B objB; public: C() { cout<<“Constructing C” <<endl; }}; int main() { clrscr(); C objC; getch(); }

Destructor function: 

Destructor function a special function which also has same name as that of class but is preceded with a tilde(~) sign . Eg :~x(); Does not have a return type(not even void) Can not have parameters Called automatically when the class object is destroyed De-allocates storage allocated to a class Should be public or protected Public ~X();//destruction function X::X() { Cout <<“over…………..”; }

Why a destructor function?: 

Why a destructor function? Used to execute when object goes out of scope so good bye messages can be displayed Releasing dynamic memory It use to display messages when objectgoes out of scope

Example of destructor: 

Example of destructor Class X { Int x,y ; Public : X() { Cout <<“constructors”; } ~X() { Cout <<“\n destructor”; } Void get() { Cin >>x>>y; }

Slide 19: 

Void display() { Cout<<x<<“ ”<<y<<endl; } } Void main() { X x1; }