A member function with the same name as its class is a constructor function. Constructors cannot return values, even if they have return statements. Specifying a constructor with a return type is an error, as is taking the address of a constructor.
If a class has a constructor, each object of that type is initialized with the constructor prior to use in a program. (For more information about initialization, see “Initialization Using Special Member Functions”.)
Constructors are called at the point an object is created. Objects are created as:
Global (file-scoped or externally linked) objects.
Local objects, within a function or smaller enclosing block.
Dynamic objects, using the new operator. The new operator allocates an object on the program heap or “free store.”
Temporary objects created by explicitly calling a constructor. (For more information, see “Temporary Objects”.)
Temporary objects created implicitly by the compiler. (For more information, see “Temporary Objects”.)
Data members of another class. Creating objects of class type, where the class type is composed of other class-type variables, causes each object in the class to be created.
Base class subobject of a class. Creating objects of derived class type causes the base class components to be created.