本文主要是介绍变量的生存期和可见性,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在下面程序中体现了变量的生存期和可见性
#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();
}
这篇关于变量的生存期和可见性的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!