C++: Constructors

When an object of a class is created, C++ calls the constructor for that class. If no constructor is defined, C++ invokes a default constructor, which allocates memory for the object, but doesn't initialize it.

Why you should define a constructor

Uninitialized member fields have garbage in them. This creates the possibility of a serious bug (eg, an uninitialized pointer, illegal values, inconsistent values, ...).

Declaring a constructor

A constructor is similar to a function, but with the following differences. Example [extracts from three different files].
//=== point/point.h =================================================
#ifndef POINT_H
#define POINT_H
class Point {
    public:
        Point();  // parameterless default constructor
        Point(int new_x, int new_y); //  constructor with parameters
        int getX();
        int getY();
    private:
        int x;
        int y;
};
#endif
Here is part of the implementation file.
//=== point/point.cpp ==============================================
. . .
Point::Point() {  // default constructor
    x = 0;
    y = 0;
}

Point::Point(int new_x, int new_y) {  // constructor
    x = new_x;
    y = new_y;
}
. . .
And here is part of a file that uses the Point class.
//=== point/main.cpp ==============================================
   . . .
   Point p;              // calls our default constructor
   Point q(10,20);       // calls constructor with parameters
   Point* r = new Point();  // calls default constructor
   Point s = p;          // our default constructor not called.
   . . .