假设A是基类, B是派生类, 顺序如下
构造B对像,从产生到消失的流程
A() -> B() -> ~B() -> ~A()..即符合Last-In-First-Out (LIFO)
派生类对象构造与析构的顺序_职场#include <map>    
派生类对象构造与析构的顺序_职场#include <string>    
派生类对象构造与析构的顺序_职场#include <iostream>    
派生类对象构造与析构的顺序_职场class A
派生类对象构造与析构的顺序_职场{
派生类对象构造与析构的顺序_职场public:
派生类对象构造与析构的顺序_职场    A(){std::cout<<"constructor A"<<std::endl;};
派生类对象构造与析构的顺序_职场    ~A(){std::cout<<"desstructor A"<<std::endl;};
派生类对象构造与析构的顺序_职场    void test(){std::cout<<"invoke test"<<std::endl;};
派生类对象构造与析构的顺序_职场};
派生类对象构造与析构的顺序_职场class B:public A
派生类对象构造与析构的顺序_职场{
派生类对象构造与析构的顺序_职场public:
派生类对象构造与析构的顺序_职场    B(){std::cout<<"constructor B"<<std::endl;};
派生类对象构造与析构的顺序_职场    ~B(){std::cout<<"desstructor B"<<std::endl;};
派生类对象构造与析构的顺序_职场
派生类对象构造与析构的顺序_职场};
派生类对象构造与析构的顺序_职场
派生类对象构造与析构的顺序_职场
派生类对象构造与析构的顺序_职场int main(int argc,char* argv[]){    
派生类对象构造与析构的顺序_职场      B myb;
派生类对象构造与析构的顺序_职场      myb.test();
派生类对象构造与析构的顺序_职场
派生类对象构造与析构的顺序_职场        return 0;    
派生类对象构造与析构的顺序_职场}
 
运行结果:
派生类对象构造与析构的顺序_职场constructor A
派生类对象构造与析构的顺序_职场constructor B
派生类对象构造与析构的顺序_职场invoke test
派生类对象构造与析构的顺序_职场desstructor B
派生类对象构造与析构的顺序_职场desstructor A