static关键字(c++)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/gongpan2468/article/details/70264285

一直对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关键字




猜你喜欢

转载自blog.csdn.net/gongpan2468/article/details/70264285
今日推荐