Constructor & destructor

32
Computer Science Constructors and Destructors… </> Saharsh Anand

Transcript of Constructor & destructor

Page 1: Constructor & destructor

Computer ScienceConstructors and Destructors…

</>

Saharsh Anand

Page 2: Constructor & destructor

</>

Constructor Functiongiving the class object some sense…

Page 3: Constructor & destructor

Ever thought that what kind of problems can an object create if it’s

not initialised.

It’s similar to giving your vehicle the final gear just during the startup.

Page 4: Constructor & destructor

The Object

What if user didn’t assign me any value initially

(by chance he forget) and finally ask me my value?

I’ll be helpless.

So to make a program

robust the object should be initialised every time.

And in class we do this by constructors...

Page 5: Constructor & destructor

• Well! It is a special member function that is used for initialization of objects (data members).

• A constructor function is called whenever an object is created.

• Constructors are also called when an object is created as a part of another object.

What is “ Constructor ” !!!

Hmmm! Sounds like it

construct something!

But what?

Page 6: Constructor & destructor

</>

Initialising a Constructor:

/* Outside the Class */

class twelfth{int total; //Total twelfth of student

char sec; //Section of the class

public:

twelfth(void); //Constructor Function Declared---

---};

//Constructor Function Defined

twelfth :: twelfth( ){ total=50; sec=‘A’;}

Page 7: Constructor & destructor

Initialising a Constructor:

</> /* Outside the Class */

class twelfth{int total; //Total twelfth of student

char sec; //Section of the class

public:

twelfth( ){ //Function Declared

total=50; sec=‘A’;}

Page 8: Constructor & destructor

Constructor Functions have “same name” as that of class name.

They do not have return types, not even void.

May or may not have parameters.

C++ has default constructors that are called whenever a class is declared even if no function with the same name exists

Some of it’s characteristics

Mind It!

Page 9: Constructor & destructor

They should be declared in “public section”.

They are invoked “automatically” when objects are created.

We cannot call it for the already constructed object.

Page 10: Constructor & destructor

Default Constructor

• Because in C++ default constructor is there.

• This constructor has no arguments in it.

• Default Constructor is also called as no argument constructor.

So you often didn’t provide any argument to

constructor, but still compiler didn’t bother to

show any error! How?

Page 11: Constructor & destructor

</>

Example for default constructor:

class person {

int DOB;

public:

person(){ cout<<“Contructor called"; } }; void main(){

person obj;

getch(); }

Page 12: Constructor & destructor

Parameterised Constructor

• A parameterized constructor is just one that has parameters specified in it.

• We can pass the arguments to constructor function when object are created.

• A constructor that can take arguments are called parameterized constructors.

Page 13: Constructor & destructor

</>

Example of a Parameterised Constructor:

class person{ int DOB;

public:

Creature(int year){ //Parameterized Constructor DOB = year; } };

Page 14: Constructor & destructor

Copy Constructor

• Copy Constructor is used to declare and initialize an object from another object.

• For example the statement: abc c2(c1); would define the object c2 and at the same time initialize it to the value of c1.

• The process of initializing through a copy constructor is known as copy initialization.

Page 15: Constructor & destructor

</>

Example of a Copy Constructor:

class abc{

int a, b;

public:

abc(int x, int y){ a = x; b = y; } abc::abc(abc &p){ a = p.a; b = p.b; }

void showdata(){ cout << a << " " << b << endl; } };

continued…

Page 16: Constructor & destructor

void main(){ abc c1(10, 20); abc c2(c1); c1.showdata(); c2.showdata(); getch(); }

</>

continued…

Page 17: Constructor & destructor

Default Constructor• Default argument is an argument to a function that a programmer is not required to specify.

• C++ allow the programmer to specify default arguments that always have a value, even if one is not specified when calling the function. • For example, in the following function declaration:

int MyFunc(int a,int b,int c=12);

Page 18: Constructor & destructor

• The programmer may call this function in two ways: result = MyFunc(1, 2, 3);

result = MyFunc(1, 2);

• In the first case the value for the argument called c is specified as normal. In the second one, the argument is omitted, and the default value of 12 will be used instead.

• It is possible to define constructors with default arguments.

Page 19: Constructor & destructor

Something Important• Automatically called when an object is created.

• We can define our own constructors

• A constructor takes the same name as the class name.

• We can’t define a constructor in the private section.

Page 20: Constructor & destructor

• No return type is specified for a constructor.

• Constructor must be defined in the public.

• Overloading of constructors is possible.

• If an object is copied from another object then the copy constructor is called.

Page 21: Constructor & destructor

</>

Destructor Functionending up the class data…

Page 22: Constructor & destructor

You won’t ever want that your

program's variable taking all

your hard disk space.

In case if you want that the program

should end up after destroying the data then you’ll have to

use destructors

Page 23: Constructor & destructor

•Destructors are special member functions.

• Release dynamic allocated memory.

• Destructors are automatically named.

• Takes the same name of class name.

What is “ Destructor ” !!!

Now this is like destroying something!

Page 24: Constructor & destructor

Syntax of Destructor

Well there is nothing to think about the syntax of destructor if you are familiar with the constructors.

Just add a tilde (~).

~class-name();

Page 25: Constructor & destructor

Something Important

• Destructors take the same name as class name.

• As in constructors, destructors are also defined in the public.

• Destructors cannot be overloaded.

• No return type is specified.

Page 26: Constructor & destructor

</>

Example of a Destructors:

class person{

int DOB; public: person(){ DOB=1998; cout<<"constructor called"<<endl; }

~person(){ cout<<"destructor called"<<endl; } };

continued…

Page 27: Constructor & destructor

void main(){ cout<<“\n Main start\n"<<endl;

{ person obj;

}

cout<<“\n Main End"<<endl;

getch(); }

continued…

</>

Page 28: Constructor & destructor

</>

Another example of destructor:

#include<iostream.h>#include<stdio.h> class Line{

public:

void setLength(double len);

double getLength(void);

Line(); // This is the constructor declaration

~Line(); // This is the destructor: declaration

private:

double length;};

continued…

Page 29: Constructor & destructor

// Member functions definitions including constructor

Line::Line(void){ cout << "Object is being created" << endl;

}

Line::~Line(void){cout << "Object is being deleted" << endl;

}

void Line::setLength(double len){ length = len;

}

double Line::getLength(void){ return length;

}

// Main function for the program

</>

continued…

Page 30: Constructor & destructor

void main(){

Line line; //Set line’s length

line.setLength(6.0);

cout<<"Length of line:"<<line.getLength()<<endl; getch();}

</>

continued…

Page 31: Constructor & destructor

Constructor

Destructor

Constructs (or create) the data in the objects of

the class.

Destroy (or delete) the data in the objects of

the class.

Page 32: Constructor & destructor