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
局部静态变量的应用,不明白时百思不得其解,明白后就豁然开朗,场景代码太多,这里仅仅直接抽象出部分代码来.
时间: 2024-12-16 06:53:42