static修饰符

1.不考虑类,即在C语言中,关键字static主要用于修饰变量和函数。

  • 修饰变量

    修饰变量时,static可以使变量具有默认初始值0,包括未初始化的全局与局部静态变量。
    静态全局变量:作用域仅限于变量被定义的文件内,即从定义之处开始知道本文件结束的区域,若在定义之前使用该静态变量,需要加关键字extern。
    静态局部变量:作用域仅限于函数体内,但生存周期为整个程序(因为static修饰的变量位于静态存储区)。函数体内的静态变量使函数具有了”记忆性”,函数在下次被调用时,仍然具有上次调用结束时的值。

  • 修饰函数

    函数前面加static关键字,使函数成为静态函数,作用域仅局限于被定义的文件内,即对其他文件隐藏了该函数,使得不同文件中的函数可以重名,而不必担心命名冲突。

2.C++中对static的扩充,即在类中static的作用。

  • 静态数据成员
    static数据成员独立于该类的任意对象而存在,即静态的数据成员都是与类相关联的,为该类的所有对象所共用,不像非static数据成员存在于类类型的每一个对象中。
    静态数据成员在类中只是引用型声明,而必须在类之外加以定义,同时予以初始化。之所以在类外加以定义,是因为需要以这种方式专门为它们分配空间。

  • 静态成员函数
    静态成员函数与静态数据成员一样,为类服务,而非类的各个具体的对象。普通成员函数总是属于某个类的具体对象,因此普通的成员函数一般隐藏了一个this指针,this指针指向该对象本身,但由于静态成员函数不属于具体的对象,因而没有此this指针,所以静态成员函数不能被声明为const,毕竟,将成员函数声明为const就是承诺不会修改该函数所属对象,而静态成员函数不属于任何对象。
    static成员函数只能调用类的静态成员函数,只能访问类的静态数据成员。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值