变量的生存期和可见性

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

#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();  
}  



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值