0

Test1.h と Test2.h という 2 つのヘッダー ファイルがあり、それぞれ Test1 クラスと Test2 クラスを定義し、これらのクラスの 2 つのオブジェクトをヘッダー ファイルでインスタンス化し、main.cpp に含めます (Test1.h と Test2.h)。その順序で)メイン関数を含む場合、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;
}
4

1 に答える 1

6

どちらも同じコンパイル単位 (main.cpp) にあるためです。

したがって、それらは宣言の順序であることが保証されます。
特定の順序でヘッダー ファイルをインクルードするためです (これは、何らかの奇妙な理由で変数が宣言されている場所です)。

したがって、順序は次のとおりです。

Test1  test1;
Test2  test2;

注: ヘッダー ファイルで変数を宣言することはお勧めできません (ソース ファイルで宣言する必要があります)。そうしないと、複数の宣言になってしまいます。

于 2012-04-19T04:43:12.793 に答える