A member function with the same name as its class is a constructor function. Constructors cannot return values. 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. 
Example
// constructors.cpp
// compile with: /c
class MyClass {
public:
   MyClass(){}
   MyClass(int i) : m_i(i) {}
private:
   int m_i;
};