Every object has a lifetime, which is a runtime property: for any object, there is a moment during the execution of a program when its lifetime begins, and there is a moment when it ends.
For objects of class or aggregate types that are initialized by anything other than the trivial default constructor, lifetime begins when initialization ends. For objects of class types whose destructor is not trivial, lifetime ends when the execution of the destructor begins. For all other objects (class