Adam Pierce의 코드를 다시 테스트 하고 클래스의 정적 변수와 POD 유형의 두 가지 사례를 추가했습니다. 내 컴파일러는 Windows OS (MinGW-32)에서 g ++ 4.8.1입니다. 결과는 클래스의 정적 변수가 전역 변수와 동일하게 처리됩니다. 생성자는 주 함수에 들어가기 전에 호출됩니다.
(1) : 올바른 상태는 "동일한 번역 단위의 함수가 호출되기 전" 이어야합니다 . 그러나 아래 예와 같이 간단하게는 주요 기능입니다.
포함 <iostream>
#include < string>
using namespace std;
class test
{
public:
test(const char *name)
: _name(name)
{
cout << _name << " created" << endl;
}
~test()
{
cout << _name << " destroyed" << endl;
}
string _name;
static test t;
};
test test::t("static in class");
test t("global variable");
void f()
{
static test t("static variable");
static int num = 10 ;
test t2("Local variable");
cout << "Function executed" << endl;
}
int main()
{
test t("local to main");
cout << "Program start" << endl;
f();
cout << "Program end" << endl;
return 0;
}
결과:
static in class created
global variable created
local to main created
Program start
static variable created
Local variable created
Function executed
Local variable destroyed
Program end
local to main destroyed
static variable destroyed
global variable destroyed
static in class destroyed
누구든지 Linux 환경에서 테스트 했습니까?