zoukankan      html  css  js  c++  java
  • [C++, Basic] C++全局对象构造析构顺序

    ObjDef.h

    /*
     *
     * Date: 2019.09.07
     *
     */
    
    #ifndef _H_H_OBJ_DEF_H_H_
    #define _H_H_OBJ_DEF_H_H_
    
    #include <iostream>
    
    class ObjA
    {
    public:
        ObjA() { std::cout << "Construct ObjA" << std::endl; }
        ~ObjA() { std::cout << "Destruct ObjA" << std::endl;  }
    };
    
    class ObjB
    {
    public:
        ObjB() { std::cout << "Construct ObjB" << std::endl; }
        ~ObjB() { std::cout << "Destruct ObjB" << std::endl; }
    };
    
    class ObjC
    {
    public:
        ObjC() { std::cout << "Construct ObjC" << std::endl; }
        ~ObjC() { std::cout << "Destruct ObjC" << std::endl; }
    };
    
    #endif

    main.cpp

    /*
     *
     * Date: 2019.09.07
     *
     */
    
    #include <iostream>
    
    #include "ObjDef.h"
    
    ObjA a;
    ObjB b;
    ObjC c;
    
    int main()
    {
        std::cout << "Hello World" << std::endl;
        return 0;
    }

    执行结果

     结论:

     全局对象初始化的顺序正好与析构的顺序相反。

     可以按栈的数据结构进行理解,先进后出,先调用初始化的,后调用析构。

     局部对象初始化与析构的顺序,与全局对象一致。

  • 相关阅读:
    栈的操作总结
    C语言复习大纲
    生理周期
    石子合并
    幸运数字
    最长&最短文本
    C++引用
    C++入门
    直角三角形
    思维的囚徒--读书摘记和自己的肤浅解读--2021.1
  • 原文地址:https://www.cnblogs.com/AiLun/p/11482784.html
Copyright © 2011-2022 走看看