美文网首页
自动对象与静态对象及static

自动对象与静态对象及static

作者: 阿杜me | 来源:发表于2018-07-07 19:00 被阅读0次

自动对象是指临时变量,存放在栈区动态存储区,无显示初始化,其值随机,作用范围从定义开始到函数结束,生命期随着函数的调用创建并随着函数退出而消亡。

静态变量是指通过static修饰的变量,存放在静态区,生命期贯穿整个程序运行期间,如果无显示初始化,则默认值为0,静态变量可以分为一下几种情况:

  1. 局部静态变量,局部变量加上static修饰,作用域为局部作用域,即所在的函数或语句结束,则作用域也结束
  2. 全局静态变量,全局变量加上static修饰,作用域为所在的文件从定义开始到文件结束,全局变量增加static修饰并不改变该变量的存储区域及生命期,只是限制该变量的作用范围,从全局可用(一处定义,多出声明可用),变成只有所在文件可用,对前台文件隐藏变量,限制其他文件访问该变量,避免变量名冲突,静态函数也有同样效果。
  3. 静态成员对象,成员对象加上static修饰,表示类的全局变量,会被该类所有对象共享,包括派生对象,因此静态成员对象需要在类外部或者在静态成员函数里初始化,不能在构造函数做初始化。静态成员初始化不能放在头文件中,会出现重复定义问题;静态数据成员可以作为成员函数的默认参数值,成员函数不行;静态数据成员类型可以所属类的类型,普通数据类型如果要使用所属类的类型,只能是指针或者引用;静态数据成员可以作为const成员函数的合法修改,因为静态数据成员不是this指针下的成员。
  4. 静态函数成员,函数成员加上static修饰,表示未类多有对象共享,静态函数成员不带this指针,因此无法直接引用该类的普通数据对象,静态函数成员可以独立调用,无需通过类实例

相关文章

  • 自动对象与静态对象及static

    自动对象是指临时变量,存放在栈区动态存储区,无显示初始化,其值随机,作用范围从定义开始到函数结束,生命期随着函数的...

  • static,const,拷贝,友元,模板

    静态成员 static 静态成员:被static修饰的成员变量\函数可以通过对象(对象.静态成员)、对象指针(对象...

  • 类型转换、static成员、单例模式

    静态成员(static) 静态成员:被static修饰的成员变量\函数可以通过对象(对象.静态成员)、对象指针(对...

  • 18-static成员

    静态成员(static) 静态成员:被static修饰的成员变量/函数,可以称为静态成员。 可以通过对象(对象.静...

  • c++之静态成员

    静态成员:被static修饰的成员变量\函数 可以通过对象(对象.静态成员)、对象指针(对象指针->静态成员)、 ...

  • C++入门08 --静态成员,单例模式,const成员,引用成员

    静态成员 静态成员:被static关键字修饰的成员变量或者函数; 可以通过对象(对象.静态成员),对象指针(对象指...

  • C++---CHAPTER 12 : Dynamic Memor

    静态内存、栈内存、动态内存 静态内存:保存局部static对象;类static对象、已经定义在任何函数之外的变量。...

  • 类的静态成员

    性质 类的静态成员(static)存在于任何对象之外,对象中不包含任何与静态数据成员有关的数据。 静态成员函数也不...

  • 父类有一个静态变量子类中改变

    父类中有个静态变量,子类会自动继承:注意:通过对象对象方法和通过类方法修改static静态变量的结果是不一样的。通...

  • 存储类

    存储类分为两类:自动存储类(automatic)和静态存储类(static)。自动存储类对象对于一个程序块来说是局...

网友评论

      本文标题:自动对象与静态对象及static

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