c++ | static的作用与用法

作用

当我们想保留对象中的某个变量的值不释放其内存,以备下次调用,我们最先会想到用全局变量。但是全局变量破坏了面向对象的封装性,当一个变量被定义为全局变量的时候,他将为所有对象所使用,所以为了保证安全,引入了static object(静态对象)。

static修饰后的对象与普通对象不同,其不同体现在生命周期以及存储空间

  • 生命周期:程序编译至程序结束时释放空间为整个生命周期。
  • 存储空间:静态对象存储在静态存储空间里。静态存储空间分为两段:DATA段和BSS段。其中DATA段存放已初始化的值,BSS段反之存放未初始化的值。值得注意的是,静态存储空间也存放全局变量。

用法

static修饰普通变量

static修饰普通变量,在main()函数之前就申请了存储空间。如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。

static int a;

static修饰普通函数

static修饰普通函数,表明函数的作用范围,只可在该文件内使用。

static int function(){};

static 修饰成员变量

静态成员引用不需要特定对象。即不需要生成对象就可以访问该成员。但访问前必须在类体外将其初始化。
注:普通对象在声明对象时并不占有空间,只有在实例化对象的时候才为对象申请分配空间。

class A
{
	public:
		static int a;
		A();
};

a = VAL;

static修饰成员函数

静态成员函数不需要对象就可以被引用,反之非静态成员函数必须有特定对象相对。静态成员函数只可以引用静态成员变量

class A
{
	public:
		static int a;
		A();
		static int function1(){};//静态成员函数
		int function2(){};//非静态成员函数
};

若是没有相应对象就引用非静态成员函数,报错:在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值