C++学习笔记(八)

1.作用域

#include<iostream>
#include<string>
using namespace std;
enum class Side{Right, Left};
enum class Thing{Wrong, Right};
int i = 4;
int main(){
    cout<<i;{
    int i=1;
    cout<<i;
    }
    cout<<i;
    return 0;
}

结果:

414

局部变量在其作用域可以覆盖同名的全局变量,可以看出,{}指示了变量的作用域

static关键字,这个表示只在第一次时进行初始化,之后只有赋值才能改变加了static得变量:

#include<iostream>
#include<string>
using namespace std;

void other(){
    static int a = 2;
    int b = 10;
    b++;
    a++;
    cout<<a<<' '<<b<<endl;
    a = b;
}
int main(){
    other();
    other();
    return 0;
}

结果:

3 11
12 11

a只初始化一次,在a=b,进行了一次赋值。b每次都重新赋值,可以知道,static声明的变量和全局变量是在同一块内存中!

static存储只属于类的信息(例中是对象数):

#include<iostream>
#include<string>
using namespace std;
class A{
public:
    int b=1;
    static int num;
    A(){
       num++;
    }
    ~A(){
        num--;
    }
    void show(){
        cout<<num<<endl;
    }
};

int A::num = 0;
int main(){
    A a;
    a.show();
    A a1;
    a1.show();
    return 0;
}

结果:

1 2

猜你喜欢

转载自blog.csdn.net/Wzz_Liu/article/details/82228284