Life-categories in C++. When objects are allocated and when initialized? Constructors for conversions and to create temporaries. The explicit keyword. Destructors, virtual destructors. Virtualize constructors: cloning. Copy constructor and assignment operator. Reference counting technique. Constructors and access levels: protected and private constructors or destructors.