c++ static 关键字总结

  1. 静态全局变量

在全局变量之间加上static关键字,就被定义为静态全局变量。

特点:在全局数据区分配内存

未初始化则被自动初始化为0

在声明它的文件内可见,在声明它之外的文件不可见,其他文件中可使用同名变量

  1. 静态局部变量

在局部变量前加上static关键字,就被定义为静态局部变量

特点:在全局数据区分配内存,但是作用域为局部作用域

一般在声明时初始化,只能被显示初始化一次,以后调用该函数时不被初始化

若未显示初始化,初始化为0

3.静态函数

在函数返回类型前加上static关键字,就被定义为静态函数

特点:只在声明它的文件中可见,在其他文件中不可见

其他文件中可以有与之同名的函数

4.静态数据成员

在类数据成员声明前加上static关键字,就被定义为静态数据成员

特点:无论类对象有多少个,静态数据成员只有一份拷贝,被所有对象共享访问,只分配一次内存,值可以更新

静态数据成员储存在全局数据区,在定义时要分配空间,所以不能在声明时定义(赋值),可以在声明第一个对象时初始化,格式为

<数据类型><类名>::<静态数据成员名>=<值>,该初始化可以放在类定义里,这样类声明对象时即可初始化

静态数据成员遵守public,private,protect访问规则

同全局变量相比,可以实现信息隐藏,而且由于没有进入全局名字空间,所以不会有命名冲突

5.静态成员函数

在类成员函数前加入static关键字,就被定义为静态成员函数

特点:为类服务而不是为某个对象服务,是类的内部实现,属于类定义的一部分

由于静态成员函数不与类对象联系,所以不存在缺省的this指针,所以也无法访问非静态数据成员,也无法访问非静态成员函数

除了使用成员访问操作符(.和->)外还可以直接访问静态成员函数,格式为<类名>::<静态成员函数名>(<参数表>)

你可能感兴趣的:(c++ static 关键字总结)