局部静态变量

 1 #pragma region 成员函数的局部静态变量应用
 2 class CTestA
 3 {
 4 public:
 5     CTestA();
 6     void ReturnCurrentTime(float currentFrame, float nextFrame);
 7 };
 8 
 9 CTestA::CTestA(){}
10 
11 void CTestA::ReturnCurrentTime(float currentFrame, float nextFrame)
12 {
13     static float _currentFrame   = currentFrame;   //静态局部变量,任何对象调用这个方法时都是这个值
14     static float _nextFrame      = nextFrame;      //静态局部变量,任何对象调用这个方法时都是这个值
15     cout<<"_currentFrame="<<_currentFrame<<" _nextFrame="<<_nextFrame<<endl;
16     _nextFrame=2000;                               //修改静态变量的值,任何对象调用这个方法时都是这个值
17 }
18 
19 void test107()
20 {
21     CTestA a1;
22     CTestA a2;
23     float i=100.0f;
24     float j=200.0f;
25     a1.ReturnCurrentTime(i,j);                    //第一次初始化,输出是100,200
26     i      =1.0f;
27     j      =2.0f;
28     a2.ReturnCurrentTime(i,j);                    //第二次初始化输出的是100,2000,而非1和2,可见外部变量只能初始化一次局部静态变量
29 }
30 #pragma endregion

局部静态变量的应用,不明白时百思不得其解,明白后就豁然开朗,场景代码太多,这里仅仅直接抽象出部分代码来.

 

posted @ 2014-11-28 22:01  一名老程序员  阅读(252)  评论(0编辑  收藏  举报