Constructors in C++

What is constructor?
A constructor is a member function of a class which initializes objects of a class. In C++, Constructor is automatically called when object(instance of class) create. It is special member function of the class.

How constructors are different from a normal member function?

A constructor is different from normal functions in following ways:

  • Constructor has same name as the class itself
  • Constructors don’t have return type
  • A constructor is automatically called when an object is created.
  • If we do not specify a constructor, C++ compiler generates a default constructor for us (expects no parameters and has an empty body).


Types of Constructors

  1. Default Constructors: Default constructor is the constructor which doesn’t take any argument. It has no parameters.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // Cpp program to illustrate the
    // concept of Constructors
    #include <iostream>
    using namespace std;
      
    class construct {
    public:
        int a, b;
      
        // Default Constructor
        construct()
        {
            a = 10;
            b = 20;
        }
    };
      
    int main()
    {
        // Default constructor called automatically
        // when the object is created
        construct c;
        cout << "a: " << c.a << endl
             << "b: " << c.b;
        return 1;
    }

    chevron_right

    
    

    Output:

    a: 10
    b: 20
    

    Note: Even if we do not define any constructor explicitly, the compiler will automatically provide a default constructor implicitly.

  2. Parameterized Constructors: It is possible to pass arguments to constructors. Typically, these arguments help initialize an object when it is created. To create a parameterized constructor, simply add parameters to it the way you would to any other function. When you define the constructor’s body, use the parameters to initialize the object.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    // CPP program to illustrate
    // parameterized constructors
    #include <iostream>
    using namespace std;
      
    class Point {
    private:
        int x, y;
      
    public:
        // Parameterized Constructor
        Point(int x1, int y1)
        {
            x = x1;
            y = y1;
        }
      
        int getX()
        {
            return x;
        }
        int getY()
        {
            return y;
        }
    };
      
    int main()
    {
        // Constructor called
        Point p1(10, 15);
      
        // Access values assigned by constructor
        cout << "p1.x = " << p1.getX() << ", p1.y = " << p1.getY();
      
        return 0;
    }

    chevron_right

    
    

    Output:

    p1.x = 10, p1.y = 15

    When an object is declared in a parameterized constructor, the initial values have to be passed as arguments to the constructor function. The normal way of object declaration may not work. The constructors can be called explicitly or implicitly.

     Example e = Example(0, 50); // Explicit call
    
     Example e(0, 50);           // Implicit call
    

    Uses of Parameterized constructor:

    1. It is used to initialize the various data elements of different objects with different values when they are created.
    2. It is used to overload constructors.

    Can we have more than one constructors in a class?
    Yes, It is called Constructor Overloading.

  3. Copy Constructor: A copy constructor is a member function which initializes an object using another object of the same class. Detailed article on Copy Constructor.

Related Articles :

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.