static关键字(c++)
来源:互联网 发布:淘宝申请退货 多长时间 编辑:程序博客网 时间:2024/06/05 16:58
参考 :http://blog.csdn.net/hackbuteer1/article/details/7487694
一直对static关键字不是很明白什么意思,看了上面那位博主的,记录并总结下,省得我忘了
一,面向过程设计的
1,静态全局变量,
(1),在全局数据区分配内存(这点和全局变量是一样的)
(2),没有初始化的静态全局变量会被自动初始化为0
(3),只能在本文件只使用,假如是一个全局变量,则其他文件可以通过extern关键字来使用,而静态全局变量不可以
2,静态局部变量
(1),在全局数据区分配内存(重点)
(2),若是反复调用静态局部变量所在的函数,那么只在第一次调用的时候进行初始化,在初始化的基础上对静态局部变量进行 处理,如加减乘除,十分试用于数据的累计处理,如累加,累乘等(这点十分类似于全局变量)
(3)如果没有显示初始化,会被自动初始化为0
(4)始终驻留在全局数据区,知道程序运行结束
(5)静态局部变量既有全局变量的优点,又使他受函数的控制,方便程序的模块化管理,维护
3,静态函数
只能在声明他的文件中使用,不能被其他文件使用
二,面向对象设计的
1,静态数据成员
(1)一个类的所有对象的非静态数据成员都会分配内存,而静态数据成员只分配一次内存,也就是说,一个类的所有对象共享该静态数据成员的内存
(2)静态数据成员储存在全局数据区内,多个对象共享访问
(3)分配内存空间只能在定义处(一定不能少定义),类中只能声明
<数据类型> <类名>::<静态数据成员>=<值>
(4)因为所有对象调用的时候是访问同一个内存,那么可以直接调用,不需要经过对象进行调用(需要能够访问,如需要public类型
<类名> ::<静态数据成员>
(5)如果改变了值,那么下个对象再次调用的时候值已经发生改变,同全局变量
(6)但是相比全局变量实现了信息的隐藏
2,静态成员函数
(1)不能访问非静态成员函数和非静态数据成员,非静态可以访问静态,静态之间可以互相访问
(2)可以不通过对象调用,
<类名>::<静态成员函数名>(<参数表>)
(3)类体外定义不能指定static,只在声明的时候指定static关键字
0 0
- c/c++-----static关键字
- 【C/C++】关键字static
- c/c++static关键字
- C++-static 关键字
- c/c++ static关键字
- C 关键字extern、static
- c语言关键字static
- C/C++ static 关键字
- c static关键字理解
- c++static关键字
- C关键字--static
- c语言static关键字
- C语言关键字static
- C语言static关键字
- c中static关键字
- 关键字static(c语言)
- C语言-关键字static
- C static 关键字
- caffe&question
- CSS3自定义滚动条样式 -webkit-scrollbar
- Ubuntu+ROS在虚拟机中使用说明以及Gazebo和Rviz的问题
- tensorflow学习笔记(三十八):损失函数加上正则项
- 插入数据
- static关键字(c++)
- Can you find it? (三分搜索
- delete 多表删除的使用(连表删除)
- C#判断线段是否相交
- 访问远程共享文件时“连到系统上的设备没有发挥作用”错误解决方法
- Android控件尺寸之多分辨率屏幕适配
- nginx 拒绝未绑定ip和域名访问
- Android6.0更新的新特性——权限处理
- nodejs返给客户端一个文件的写法