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