变量的生存期和可见性

来源:互联网 发布:工商总局网络教育平台 编辑:程序博客网 时间:2024/05/16 15:58

在下面程序中体现了变量的生存期和可见性  

#include<iostream>  using namespace std;  int i = 1;                  //i为全局变量,具有静态生存期  int main()  {      static int a;           //a为静态局部变量,具有全局寿命,局部可见           int b = -10;            //b,c为局部变量,具有动态生存期      int c = 0;      void other(void);      cout << "-----MAIN-----\n";      cout << "i:" << i << "a:" << a << "b:" << b << "c:" << c << endl;      c = c + 8;      other();      cout << "-----MAIN-----\n";      cout << "i:" << i << "a:" << a << "b:" << b << "c:" << c << endl;      i = i + 10;      other();  }  void other(void)  {      static int a = 2;      static int b;              //a,b为静态局部变量,具有全局寿命,局部可见,只有第一次进入函数时被初始化      int c = 10;    //c为局部变量,具有动态生存期,每次进入函数都初始化      a = a +2;  i = i +32;  c = c + 5;      cout << "------OTHER-----\n";      cout << "i:" << i << "a:" << a << "b:" << b << "c:" << c << endl;      b = a;  }  

类的对象之间,的不同属性为对象的“实例属性”。

此外,面向对象方法中还有类属性的概念。如果某个属性为整个类所拥有,则用static关键字来声明为静态成员。


#include<iostream>  using namespace std;  class Point  {  public:      Point(int xx = 0, int yy = 0) {X = xx; Y = yy; countP++; }      Point(Point &p);      ~Point() {countP--;}      int GetX() {return X;}      int GetY() {return Y;}      void GetC() {cout << "Objective id =" << countP << endl;}  private:      int X,Y;      static int countP;       //静态数据成员声明,用于记录点的个数  };    Point :: Point(Point &p)  {      X = p.X;      Y = p.Y;      countP++;                //在构造函数中对countP累加,所有对象共同维护同一个countP  }    int Point :: countP = 0;  int main()  {      Point A(4,5);      cout << "Point A," << A.GetX() << "," << A.GetY();      A.GetC();      Point B(A);      cout << "Point B," << B.GetX() << "," << B.GetY();      B.GetC();  }  



原创粉丝点击