全局变量的实例化顺序

时间:2012-04-19 04:40:03

标签: c++ visual-studio-2010

如果我有2个头文件,Test1.h和Test2.h,我在其中分别定义类Test1和Test2,并在头文件中实例化这些类的2个对象,并将它们包含在main.cpp中(Test1.h和Test2.h按顺序)包含main函数,test1和test2对象的实例化顺序是什么?

// Test1.h

class Test1
{

};

Test1 test1;

// Test2.h
class Test2
{

};

Test2 test2;

// main.cpp

#include "Test1.h"
#include "Test2.h"

int main( int argc, const char * argv [] )
{
        return 0;
}

1 个答案:

答案 0 :(得分:6)

因为它们都在同一个编译单元(main.cpp)

因此,他们保证按声明的顺序排列 因为您按特定顺序包含头文件(由于某些奇怪的原因,这是声明变量的位置)。

因此订单是:

Test1  test1;
Test2  test2;

注意:在头文件中声明变量是一个坏主意(它们应该在源文件中声明)。否则你最终会得到多个声明。