explain c++ object lifecycle