Constructor&Destructor
Constructor&Destructor
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.
class X { int i ;
public:
int j,k ;
X() { i = j = k =0;}
};
X::X()
{
I = j = k =0;
}
Note
Generally a constructor should be defined
under the public section of a class, so that
its object can be created in any function
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
A constructor that accept no parameter is
called the default 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
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); //1st const. called
sample s2 (s1) // copy const. called
sample s3 = s1; copy const. called
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
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
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;
}
obj1
obj2
obj3
i=10
j=20
i=250
j=20
i=2
j=4
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();
}