C++ Constructor and Destructor

In the previous chapter, we learned about classes and objects. When an object is created, sometimes we want to give it some starting values automatically. C++ provides constructors for this. A destructor is used when an object is removed from memory.

Let’s understand C++ Constructor and Destructor with simple examples.

What is a C++ Constructor?

A constructor is a special function that runs automatically when an object is created. A constructor:

  • Has the same name as the class.
  • Does not have a return type.
  • Runs automatically.

Simple Example

#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    string name;

    Student() {
        name = "Rahul";
    }
};

int main() {
    Student student;

    cout << student.name;

    return 0;
}

Output:

Rahul

When this line runs:

Student student;

the Student() constructor runs automatically.

Parameterized Constructor

A constructor can also receive values. This is called a parameterized constructor.

#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    string name;
    int age;

    Student(string n, int a) {
        name = n;
        age = a;
    }
};

int main() {
    Student student("Rahul", 14);

    cout << "Name: " << student.name << "\n";
    cout << "Age: " << student.age;

    return 0;
}

Output:

Name: Rahul
Age: 14

Here:

Student student("Rahul", 14);

passes "Rahul" and 14 to the constructor.

The constructor then stores these values in the object.

Creating Multiple Objects

A parameterized constructor makes it easy to create objects with different values.

#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    string name;
    int age;

    Student(string n, int a) {
        name = n;
        age = a;
    }
};

int main() {
    Student student1("Rahul", 14);
    Student student2("Anjali", 15);

    cout << student1.name << " - " << student1.age << "\n";
    cout << student2.name << " - " << student2.age;

    return 0;
}

Output:

Rahul - 14
Anjali - 15

Each object gets its own values.

Constructor Overloading

A class can have more than one constructor, as long as they have different parameters. This is called constructor overloading.

#include <iostream>
#include <string>
using namespace std;

class Student {
public:
    string name;
    int age;

    Student() {
        name = "Unknown";
        age = 0;
    }

    Student(string n, int a) {
        name = n;
        age = a;
    }
};

int main() {
    Student student1;
    Student student2("Rahul", 14);

    cout << student1.name << " - " << student1.age << "\n";
    cout << student2.name << " - " << student2.age;

    return 0;
}

Output:

Unknown - 0
Rahul - 14

Here, C++ chooses the correct constructor based on how the object is created.

What is a C++ Destructor?

A destructor is a special function that runs automatically when an object is destroyed. A destructor:

  • Has the same name as the class.
  • Starts with ~.
  • Does not have a return type.
  • Does not take parameters.

Simple Example

#include <iostream>
using namespace std;

class Student {
public:
    Student() {
        cout << "Object created\n";
    }

    ~Student() {
        cout << "Object destroyed";
    }
};

int main() {
    Student student;

    return 0;
}

Output:

Object created
Object destroyed

The constructor runs when the object is created.

The destructor runs when the object is destroyed.

Constructor vs Destructor

ConstructorDestructor
Runs when an object is createdRuns when an object is destroyed
Same name as the classSame name as the class with ~
Used to initialize an objectUsed for cleanup
Can have parametersCannot have parameters

For example:

Student();
~Student();

A Simple Example

Let’s create a class that shows both the constructor and destructor.

#include <iostream>
using namespace std;

class Demo {
public:
    Demo() {
        cout << "Constructor called\n";
    }

    ~Demo() {
        cout << "Destructor called\n";
    }
};

int main() {
    Demo obj;

    cout << "Program is running\n";

    return 0;
}

Output:

Constructor called
Program is running
Destructor called

The order is:

Object created
      ↓
Constructor runs
      ↓
Program uses object
      ↓
Object is destroyed
      ↓
Destructor runs

Key Points to Remember

  • A constructor runs automatically when an object is created.
  • A constructor has the same name as the class.
  • A constructor does not have a return type.
  • A parameterized constructor can receive values.
  • A class can have multiple constructors.
  • A destructor runs when an object is destroyed.
  • A destructor starts with ~.
  • A destructor does not take parameters.

Mini Quiz

0%

C++ PROGRAMMING - QUIZ 14

1 / 5

Q1. What is the main purpose of a constructor in C++?

2 / 5

Q2. Which of the following is a valid constructor for a class named Student?

3 / 5

Q3. What is a parameterized constructor used for?

4 / 5

Q4. What symbol is used before a destructor's name?

5 / 5

Q5. When does a destructor run?

Your score is

The average score is 0%

0%

Mini Project

Mini Project: Game Character

Question:

Write a C++ program that creates a GameCharacter class to store and display character information.

  • Create a GameCharacter class.
  • Store the character name using string.
  • Store the character level using int.
  • Create a parameterized constructor to initialize these values.
  • Create a function to display the character information.
  • Create a destructor that displays a message when the object is destroyed.
  • Create an object of the GameCharacter class and display its information.
View Answer Code
#include <iostream>
#include <string>

using namespace std;

class GameCharacter {
public:
    string name;
    int level;

    GameCharacter(string n, int l) {
        name = n;
        level = l;
    }

    void displayCharacter() {
        cout << "Character: " << name << "\n";
        cout << "Level: " << level << "\n";
    }

    ~GameCharacter() {
        cout << "Character removed.";
    }
};

int main() {

    GameCharacter character("Shadow", 25);

    character.displayCharacter();

    return 0;
}

What’s Next?

In the next chapter, we will learn about C++ Inheritance and see how one class can use the features of another class.


Frequently Asked Questions (FAQs)

Q1. What is a C++ constructor?

A constructor is a special function that runs automatically when an object is created and is commonly used to initialize its data.

Q2. What is a C++ destructor?

A destructor is a special function that runs automatically when an object is destroyed and is used for cleanup.

Q3. Can a C++ constructor have parameters?

Yes. A parameterized constructor in C++ can accept values when an object is created.

Q4. What is constructor overloading in C++?

Constructor overloading means creating multiple constructors in the same class with different parameter lists.

Q5. What is the difference between a constructor and destructor in C++?

A constructor runs when an object is created, while a destructor runs when the object is destroyed.

Written by Shubhranshu Shekhar, who has trained 20000+ students in coding.

Scroll to Top