/*
*
* 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
/*
*
* 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++中全局对象的初始化和析构顺序,指出其遵循先进后出的原则,与局部对象的处理方式一致,这与栈的数据结构特性相吻合。
1272

被折叠的 条评论
为什么被折叠?



