Difference Between Constructor and Destructor in C++

What is a Destructor in C++?

Destructor is a member function that is instantaneously called whenever an object is destroyed. The destructor is called automatically by the compiler when the object goes out of scope i.e. when a function ends the local objects created within it also gets destroyed with it. The destructor has the same name as the class name, but the name is preceded by a tilde(~). A destructor has no return type and receives no parameters.

Characteristics of a Destructor in C++

  • It deallocates the memory of an object.
  • It doesn’t take any argument.
  • It is called automatically when the block is exited or when the program terminates.
  • They allow objects to execute code when it is being destroyed.
  • They are called in the reverse order of their creation.
  • There is a single destructor in a class.
  • Destructor can’t be overloaded.

What is a Constructor in C++?

Constructor in C++ is a special member function of a class whose task is to initialize the object of the class, it’s special because it has the same name as that of the class. It is called a constructor because it constructs the value of data members at the time of object initialization. The compiler invokes the constructor whenever an object is created. Since a constructor defines the value to a data member, it has no return type.

Types of Constructors in C++

There are 4 types of constructors in C++:

  1. Default Constructors
  2. Parameterized Constructors
  3. Copy Constructors
  4. Dynamic Constructors

Characteristics of Constructors in C++

  • It helps allocate memory to an object.
  • It can take arguments.
  • It is called automatically when an object is created.
  • It allows an object to initialize a value before it is used.
  • They are called in the successive order of their creation.
  • There can be multiple constructors in a single class.
  • The copy constructor allows the constructor to declare and initialize an object from another object.
  • It can be overloaded.

Differences between Constructor and Destructor in C++

Basis of Comparison Constructor Destructor
DefinitionConstructors are special class members used to allocate memory for objects.A destructor is a special member of a class used to allocate memory for an object.
Method of InvokingWhen the object is created only then the constructor is called.The destructor is called when the object is destroyed or deleted.
UsageThe constructor is used to allocate memory for the object.Destructors are used to allocate memory for objects. 
 ParametersThe constructor accepts parameters. The destructor does not accept any parameters. 
Number of Constructors and DestructorsThere can be multiple constructors with different numbers of parameters and different types of parameters.There is only a single destructor in the class.
Execution SpeedThe constructor’s name is the same as the name of the class. The name of the destructor is the same as the class name, with a tilde (~) symbol.
OverloadingConstructors can be overloaded.Destructors cannot be overloaded.

Key Points

  • Constructor and Destructor are the special member functions of the class which are created by the C++ compiler or can be defined by the user.
  • Constructor is called by the compiler whenever the object of the class is created, it allocates the memory to the object and initializes class data members.
  • A destructor is called by the compiler when the object is destroyed and its main function is to deallocate the memory of the object.
  • Constructors have the same as of class while destructors have the same name of the class with the prefix a tilde (~) operator.
  • Both Constructor and destructor can be defined as public, private, or protected. But it is better to declare the constructor as public.
  • The constructor can have parameters but the destructor doesn’t receive any parameters.