Skip to main content

CONSTRUCTOR AND DESTRUCTOR in C++

CONSTURCTOR

It is a member function having same name as it’s class and which is used to initialize the objects of that class type with a legel initial value. Constructor is automatically called when object is created.

Types of Constructor

Default Constructor-: A constructor that accepts no parameters is known as default constructor. If no constructor is defined then the compiler supplies a default constructor.

student :: student()
{
     rollno=0;
     marks=0.0;
}

Parameterized Constructor -: A constructor that receives arguments/parameters, is called parameterized constructor.
student :: student(int r)
{
     rollno=r;
}

Copy Constructor-: A constructor that initializes an object using values of another object passed to it as parameter, is called copy constructor. It creates the copy of the passed object.
student :: student(student &t)
{
     rollno = t.rollno;
}

DESTRUCTOR

A destructor is a member function having sane name as that of its class preceded by ~(tilde) sign and which is used to destroy the objects that have been created by a constructor. It gets invoked when an object’s scope is over.
~student() { }

Example:

#include<iostream.h>
#include<conio.h>
class Student 
{
  private :
    int rollno; 
    float marks; 
  public:
    Student() //default constructor
    {
       rollno=0;
       marks=0.0;
    }
    Student(int r, int m) //parameterized constructor
    {
       rollno=r;
       marks=m;
    }
    Student(student &t) //copy constructor
    {
       rollno=t.rollno;
       marks=t.marks;
    }
    void getdata() //member function to get data from user
    {
       cout<<"Enter Roll Number : ";
       cin>>rollno;
       cout<<"Enter Marks : ";
       cin>>marks;
    }
    void showdata() // member function to show data
    {
       cout<<"\nRoll number: "<<rollno<<"\nMarks: "<<marks;
    }
    ~Student() //destructor
    {} 
};
void main()
{
    clrscr(); 
    Student st1; //defalut constructor invoked
    Student st2(5,78); //parmeterized constructor invoked
    Student st3(st2); //copy constructor invoked
    st1.showdata(); //display data members of object st1
    st2.showdata(); //display data members of object st2
    st3.showdata(); //display data members of object st3
    getch();
}

Comments