C++语言程序设计 例:求数据序列的平均值 st吐ti晶部的持放果 要求: 计算当前所有输入数据的平均值。 方法: 使用静态局部变量,使累加和持续保持。 原因: static局部变量是具有静态生存期的局部变 量,具有全局的寿命和局部的可见性。大x
C++语言程序设计 16 例:求数据序列的平均值—— static局部变量的持续效果 要求: 计算当前所有输入数据的平均值。 方法: 使用静态局部变量,使累加和持续保持。 原因: static局部变量是具有静态生存期的局部变 量,具有全局的寿命和局部的可见性
立绝诞过 ostream using name space std int Average (int i) //声明静态局部变量目右仝素命局部可 static int sum=0. count =0. sum sum +i: count++ return sum/count int maino int num;//局部变量,具有动态生存期 do I cout< Enter numbers (-1 to quit): cin>>num if(num!=-1) cout < average is: < Average(num)<endl f while(num>-1) x return 0 17
C++语言程序设计 17 #include <iostream> using namespace std; int Average(int i) { //声明静态局部变量,具有全局寿命,局部可见 static int sum = 0, count = 0; sum = sum + i; count++; return sum / count; } int main() { int num; //局部变量,具有动态生存期 do { cout << "Enter numbers (-1 to quit): "; cin >> num; if(num != -1) cout << " average is: " << Average(num) <<endl; } while(num > -1); return 0; }
C++语言程序设计 例5-3具有静态、动态生存期对象的时钟租序 对象 include<iostream> using namespace std; 的 class clock时钟类声明 生pu ubic:∥外部接口 ClockO; 存 void SetTime(int NewH, int NewM, int NewS); 期三个形参均具有函数原型作用域 void ShowTime -Clock(t private:∥有数据成员 int hour minute second; x 18
C++语言程序设计 18 例5-3具有静态、动态生存期对象的时钟程序 #include<iostream> using namespace std; class Clock //时钟类声明 {public: //外部接口 Clock(); void SetTime(int NewH, int NewM, int NewS); //三个形参均具有函数原型作用域 void ShowTime(); ~Clock(){} private: //私有数据成员 int Hour,Minute,Second; }; 对 象 的 生 存 期
∥时钟类成员函数实现 c|ock: Clock()构造函数 I Hour=0; Minute=0 Second=0: void Clock SetTime(int NewH, int NewM, int News) Hour=New出 Minute=NewM Second=NewS void Clock Show TimeO I cout<<Hour<< .<<Minute<< : <<Second<<endl
//时钟类成员函数实现 Clock::Clock() //构造函数 { Hour=0; Minute=0; Second=0; } void Clock::SetTime(int NewH, int NewM, int NewS) { Hour=NewH; Minute=NewM; Second=NewS; } void Clock::ShowTime() { cout<<Hour<<":"<<Minute<<":"<<Second<<endl; } 20
Clock globClock;∥声明对象 globClock, ∥具有静态生存期,文件作用域 int main(∥主函数 cout<< First time output: <<endl ∥(用具有文件作用域的对象: globclock ShowTime(;∥对象的成员函数具有类作用域 globClock SetTime(8, 30, 30); Clock my(globClock) ∥声明具有块作用域的对象 my Clock cout<< Second time output: <<endl my Clock. ShowTime0);引用具有块作用域的对象
Clock globClock; //声明对象globClock, //具有静态生存期,文件作用域 int main() //主函数 { cout<<"First time output:"<<endl; //引用具有文件作用域的对象: globClock.ShowTime(); //对象的成员函数具有类作用域 globClock.SetTime(8,30,30); Clock myClock(globClock); //声明具有块作用域的对象myClock cout<<"Second time output:"<<endl; myClock.ShowTime(); //引用具有块作用域的对象 } 21