一 static的使用 (作用域和存储方式)
1.作用域---------->隐藏
静态函数跟静态全局变量的作用类似 (静态函数不能被其它文件所用; 其它文件中可以定义相同名字的函数,不会发生冲突)
int a = 10;
void add()
{
static int a=0; //对该函数进行隐藏,只作用于该函数内,这个函数只执行一次,下次就不会再给a 进行赋值操作
printf("a = %d",a);
}
int main()
{
` a++;
add();
printf("a = %d",a);
}
结果 : a=0 a=10;
函数(static 里面不包含this指针)
a.静态函数只能访问静态成员变量(不需要this指针)
b.静态函数不能访问普通成员函数,反之成立(静态成员函数没有this指针)
2. 存储方式-------------->共有的(它的值会被保存,下次调用仍保持上一次数值)
a.局部变量 : 在该函数执行变量结束后,该变量不会被释放,继续保存
b.全局变量 : 表示当变量在全局内都可以访问
c.类成员变量 : 表示这个变量为全类所有的(所有对象都公用这个变量,它不是某一个对象的私有的)
二 const的使用 (只具有读的工能)
- const 常量:定义时就初始化,以后不能更改。
- const 形参:func(const int a){};该形参在函数里不能改变
- const修饰类成员函数:该函数对成员变量只能进行只读操作
- 可以作为重载函数 void func(Test * const this(默认的)) const ---------=>void func(const Test * const this):这个函数只具有读的功能,不能对对其变量进行修改
因为this指针为常量,不能变化,它和static成员函数类似,普通函数可以访问常成员函数,反之则不成立.常成员函数只能访问常成员变量
三 不同点
static : 为静态变量,只和类有关系,和对象无关,即使没有对象也可以调用静态函数和变量.
数据类型 类名::静态数据成员名=值 int Test::a = 10;
const : 初始化必须有构造函数初始化,不同对象const的数值不一样.