A POD (plain old data) object has one of these data types–a fundamental type, pointer, union, struct, array, or class–with no constructor. Conversely, a non-POD object is one for which a constructor exists. A POD object begins its lifetime when it obtains storage with the proper size for its type and its lifetime ends when the storage for the object is either reused or deallocated.