类的static成员初始化时机
VC2008
// .h
#pragma once
#include <list>
using namespace std;
class CTestClass
{
public:
CTestClass(void);
~CTestClass(void);
static list<int> s_list;
};
// .cpp
#include "StdAfx.h"
#include "TestClass.h"
list<int> CTestClass::s_list; // <-- 断点1
CTestClass::CTestClass(void)
{
s_list.push_back(1); // <-- 断点2
}
CTestClass::~CTestClass(void)
{
}
class CTestClass
{
public:
CTestClass(void);
~CTestClass(void);
typedef list<int> TestList;
static TestList& GetInternalList()
{
static TestList s_list; // <-- 断点1
return s_list;
}
};
CTestClass::CTestClass(void)
{
GetInternalList().push_back(1); // <-- 断点2
}