constructors and their types prepared by murli manohar pgt (comp. science) kv,b.e.g., pune

21
CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Upload: clarissa-fitzgerald

Post on 03-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

CONSTRUCTORS ANDTHEIR TYPES

PREPARED BY

MURLI MANOHAR PGT (COMP. SCIENCE)

KV,B.E.G., PUNE

Page 2: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

What is a constructor? • It is a member function which initializes a class.• A constructor has:

(i) the same name as the class itself

(ii) no return type

Page 3: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Constructor : Def.

A constructor is a member function of a class that is automatically called, when an object is created of that class. The constructor has the same name as that of the class’s name and its primary job is to initialize the object to a legal initial value for the class.

Page 4: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Example:class Student

{

private:

int rollno;

float marks;

public:

:

Student ( ) //constructor

{ rollno=0;

marks=0.0;

}

: //other public members

};

Page 5: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Example : -

class rectangle { private: float height; float width; int xpos; int ypos; public: rectangle(float, float); // constructor void draw(); // draw member function void posn(int, int); // position member function void move(int, int); // move member function}; rectangle::rectangle(float h, float w){ height = h; width = w; xpos = 0; ypos = 0;}

Page 6: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Need For ConstructorA structure or an array in C++ can be initialized at a time of their

declaration.

struct Student

{ int rollno;

float marks;

};

int main ( )

{ Student s1 = { 0, 0.0}

int a[5] = { 1,2,3,4,5};

.

.

}

But such initialization does not work for a class because the class members have their associated access specifiers. They might not be available to the outside world.

Page 7: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Exampleclass Student

{

private:

int rollno;

float marks;

public: // public members

:

};

int main()

{ Student senior = {0,0.0}; //illegal ! Data member are not accessible

:

};

A constructor for a class is needed so that the compiler automatically initializes an object as soon as it is created. A class constructor, if defined, is called whenever a program creates an object of that class.

Page 8: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Declaration And Definitionclass x { int i;

public:int j,k;x( ) // Constructor{ i=j=k=0;}.. // other members.

};

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

Page 9: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

TYPES OF CONSTRUCTOR1. Default Constructors• A constructor that accepts no parameter is called the

default constructor.• When user-defined class does not contain an explicit

constructor ,the compiler automatically supplies a default constructor, having no arguments. This implicitly-declared default constructor is an inline public members of its class.

Page 10: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Example: For Default Constructorclass Test

{ int ant;

public:

Test ( )

{ ant = 0;

}

.

.

};

int main( )

{ Test t1;

.

.

.

}

Page 11: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

2. Parameterized Constructor• Like other functions you can also write constructors that

can accept parameters.• Such constructors are called Parameterized constructors.

Once you declare a constructor with arguments, the default constructor becomes hidden.• A constructor that accepts parameters for its invocation is known

as parameterized constructor.

Page 12: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Example : Parameterized Constructor• class Test { int ant;

public: Test(int i)

{ ant=i; }..

};int main(){ Test objects1(45); Test objects2(75);}

Page 13: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Significance Of Default Constructors• The default constructors are very useful when you want to

create object without having to type the initial values or want to initialize object every time with prespecified initial values or if you want to create array of object of your class type.

Page 14: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

• Class test { int a ; char b; public : test () //this is default constructors { cout<<“default constructors being called \n” ; } test (int I , char j) //constructor with argument { a= i ; b = j ; cout <<“constructor with argument called \n”; } } ; int main () { test tarry [5] ; //ok now as array can be created because default constructors is available test newjob (31 , ‘z’) ; // constructor with argument will be called for this : } ;

Page 15: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

3. COPY CONSTRUCTOR A copy constructor is a constructor of the

form classname (classname &) . The complier will use the copy constructor whenever you initialize an instance using values of another instance of same types.

• Examples

sample S1 ; //default constructor used

sample S2 =S1 ; //copy constructors used

Page 16: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Example : Copy Constructor• class sample

{ int I,j;

public:

sample (int a, int b) // Constructor

{ i=a;

j=b;

}

sample (sample &s) // Copy Constructor

{ j = s.j;

i = s.j;

cout<<“\n Copy constructor working \n”;

}

void print (void)

{ cout<<i<<j<<“\n”;

}

.

.

};

Page 17: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

When is a copy constructor called?

1. When an object is passed by value

void afunc (Sample); //Sample is a class

2. When a function returns an object

Sample afunc( ); // Sample is a class and

here it is return type of afunc( )

Page 18: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Three types of constructors supported in c++

• Default Constructor• Parameterized Constructor• Copy Constructor

The standard c++11 has introduced a new type of constructor namely Move Constructor , Which is used to move the content of objects class type.

Page 19: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Special Characteristics of Constructors1. Constructor functions are invoked automatically when

the objects are created.

2. If a class has a constructor, each object of that class will be initialized before any use is made of the object.

3. Constructor functions obey the usual access rules. Only the function that have access to the constructor of a class, can create an object of the class.

4. No return type can be specified for a constructor .

5. They cannot be inherited, though a derived class can call the base class constructor

6. A Constructor may not be static.

Page 20: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

Contd.-

7. Default constructors and copy constructors are generated where needed.

8. Like other C++ functions, constructors can also have default arguments.

9. It is not possible to take the address of a constructor.

10. Member functions may be called from within a constructor.

Page 21: CONSTRUCTORS AND THEIR TYPES PREPARED BY MURLI MANOHAR PGT (COMP. SCIENCE) KV,B.E.G., PUNE

THANKS