C++中,我们经常会用到静态变量,但对于这些静态变量的初始化,我们只能对其进行赋初值,不能像C#或是Java中那样,有一个静态初始化段来进行一些复杂的初始化工作。
举例来说,我有一个类,其成员变量会在多个线程中并发访问,所以我需要一个锁来保护数据一致性。于是有了这样的代码:
- class MyClass
- {
- public:
- void Foo()
- {
- ::EnterCriticalSection(&ms_lock);
- // operates m_mapValues
- ::LeaveCriticalSection(&ms_lock);
- }