美文网首页
static关键字

static关键字

作者: 镜中无我 | 来源:发表于2019-10-19 11:16 被阅读0次
static关键字的内存原理
  • 分配在全局数据区
  • 编译期初始化,默认初始化为零

static在不同场景中的效用

目录
  • 成员变量
  • 成员函数
  • 全局变量
  • 局部变量
  • 普通函数
成员变量
  1. 根据其内存性质,我们知道这个变量是类本身的一个属性,记得是类而不是对象,所以它对于所有实例化的对象而言是共享属性。此外,它不构成对象的内存空间,所以sizeof(xxx)的值等于除静态变量外所哟成员变量大小的总和;
  2. 定义和初始化同步进行,可以不加static关键字,声明时不分配内存空间;
  3. 功能属性:用于实现对象间数据共享,主要针对对于与类本身高度耦合的数据;
    4 静态数据成员常用作计数器,被对象的成员函数调用,此时记得考虑包含静态成员的构造函数,应该重写拷贝构造函数;
成员函数
  1. 和静态数据成员类似,静态函数也是属于类本身,所以他所使用的变量不能是任意对象所拥有的,比如不包含this指针(对象空间的初始地址),对象的非静态成员等;
    2 语法规则:出现在类体外的函数定义不能指定关键字static;静态成员函数因为其编译期属性和没有this的开销,所以效率会更高;可以通过对象和类名调用静态成员(权限允许的情况下)
    3 因为const成员函数本身会限制对对象属性的修改包括this指针,所以对于成员函数而言,const和static不能共存;
静态全局变量
  1. 在全局数据区分配(空间不会被释放直至进程结束)
  2. 可见性:本文件全局可见,其他文件不可见
静态局部变量
  1. 和全局静态变量一样在全局数据区分配
  2. 只会在声明时初始化一次,除此之外保持上次被使用的值
  3. 作用域为局部,但是不会被释放直至程序运行结束
静态函数

只有一点:仅当前文件可见,避免不同文件中函数名的冲突

总结

static变量被分配在静态内存区,在编译时分配空间并初始化,与动态内存区变量区分开来,能够有效地构建类型固有属性,在对象之间共享,节省程序动态运行开支,同时保持程序命名空间的独立性

相关文章

  • OC中static、const、extern关键字理解

    static关键字 static关键字用于修饰变量。 static修饰局部变量当使用static修饰局部变量时, ...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • 【Java】关键字

    一、 static关键字 static关键字的总结: static关键字 可以再没有创建对象的时候进行调用类的元素...

  • Java学习Day03

    今日学习内容总结 Static关键字 Arrays类 Math类 继承 Static关键字 一旦用了static,...

  • java基础-day11-static关键字

    static关键字和接口 1. static关键字【重点】 1.1 static修饰静态成员变量 1.1.1 为什...

  • C语言中的static关键字

    @TOC C语言中的static关键字 static 关键字,意为静态。 static 变量 特性:全局变量在函数...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • Java学习13:static关键字,this关键字

    static关键字 static翻译为“静态的”。所有static关键字修饰的都是类相关的,类级别的。所有stat...

网友评论

      本文标题:static关键字

      本文链接:https://www.haomeiwen.com/subject/lkyouctx.html